2013-12-23 9 views
0

У меня есть папка с 9500 документами внутри (давайте позвоним, если folder1). Я хочу сделать копию этой папки со структурой, которую она имеет, но я хочу, чтобы в новой папке (назовем ее folder2) все документы должны быть пустыми. Папка 1 содержит несколько типов документов. Недо теперь у меня есть как код:Копия папки и подпапки в MSDOS

@echo off 
set "source=C:\Users\DM\Desktop\folder1\*.*" 
set "dest=C:\Users\DM\Desktop\folder2" 

xcopy "%source%" "%dest%" /t/e 
for /f "tokens=2 delims=>" %%a in ('xcopy "%source%" "%dest%" /s/h/e/k/f/c/l') do (
for /f "tokens=*" %%b in ("%%a") do type nul >"%%b" 
) 
pause 

Летучая мышь идет нормально, но через некоторое время есть 3 различные ошибки на ЦМДЕ и складывает там (мои окна греческие, так что я пытаюсь перевести ошибки) , Один из них заключается в том, что «памяти недостаточно», а следующая - «Система не может найти указанный путь к диску (или диску)» (это один из двух дисков/дисков, которые я думаю.), А последний - «Синтаксис имени файла» , метка каталога или тома ". Он останавливается в определенном файле htm с символами «<>» в заголовке.

Не могли бы вы рассказать мне, что добавить? Заранее спасибо

+0

Конечно, кажется странным. Теоретически, должно быть невозможно иметь '>' или '<' в имени файла. '/ K' избыточен, поскольку используется переключатель'/L', а '/ e' подразумевает'/s', поэтому '/ s' также избыточно, но они косметические. Я также предпочел бы «copy nul» %% b »> nul', но опять же, это было бы личным предпочтением. Не могли бы вы 'ECHO (+ %% a +' перед 'for ... %% b' и сообщать результаты с помощью списка part-dir из числа строк, вызывающих обиду, в именах файлов? Вполне возможно, что сообщения с недостаточной памятью и не могут найти сообщения из-за того, что вы не уверены. 'dest' не является подкаталогом' source'? – Magoo

+0

У этого пользователя есть 'Greek' OS, а также могут быть имена' Unicode'. Возможно, кто-то может предложить ему кодовую страницу для использования его регион, для начала. – foxidrive

ответ

0

Надеюсь, код ниже поможет. Но он повторяет новую строку для всех файлов. И я не мог использовать источник как параметр в! FileRelPath: C: \ te mp \ =!

@echo off 
setlocal enabledelayedexpansion 

set source=C:\te mp\ 
set dest=C:\te mp2\ 

if not exist "%dest%" mkdir "%dest%" 

xcopy "%source%*" "%dest%" /t /e 

for /F "tokens=*" %%a in ('dir /B /S /A-D "%source%"') do (
    set fileRelPath=%%a 
    set fileRelPath=!fileRelPath:C:\te mp\=! 

    echo.>"%dest%!fileRelPath!" 
) 
0

Как говорит Магу, это странно.

Во всяком случае, в то время как найти, где это не удается, вы можете сделать то же самое с

robocopy "%source%" "%dest%" * /e /create 

 Смежные вопросы

  • Нет связанных вопросов^_^