Пользовательское копирование файлов с помощью Robocopy

Если текстовый файл содержит список файлов, как показано в коде ниже, но он ошибается, говоря, что %%a является недопустимым параметром, даже если он правильно видит %% a как имя файла.

Каким-либо образом обойти это?

РЕДАКТИРОВАТЬ:

for /f "delims=" %%a in (C:\audit\test.txt) do (
  robocopy "%%~dpa" "Z:" "%%~nxa" /S /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30
)
pause

person PnP    schedule 27.01.2014    source источник


Ответы (1)


Аргумент имени файла ROBOCOPY не может включать абсолютный или относительный путь. Это должно быть просто имя (с расширением). (В качестве альтернативы это может быть маска.)

Если ваш текстовый файл содержит полные пути, вы можете извлекать имена и расширения только с помощью комбинированного модификатора ~nx:

for /f "delims=" %%a in (C:\audit\test.txt) do (
  robocopy "C:\Test1" "C:\Test2" "%%~nxa" /S /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30
)

Кроме того, подумайте о том, чтобы заключить все имена путей / файлов в двойные кавычки, как вы можете видеть выше, чтобы избежать проблем с именами, содержащими пробелы и / или специальные символы.

person Andriy M    schedule 27.01.2014
comment
Могу ли я удалить имена файлов из полного пути? т.е. у меня есть C: \ Folder A \ test.txt в текстовом файле, и я хочу получить только C: \ Folder A \ для источника и Test.txt для файла (где сейчас %% ~ nxa ) - person PnP; 27.01.2014
comment
%%~dpa извлечет диск и путь без имени и расширения. Вы можете узнать больше об этих модификаторах во встроенной справке команды for (for /?, они перечислены ближе к концу). - person Andriy M; 27.01.2014
comment
Я подумал, однако, посмотрите мою правку, вроде не работает. - person PnP; 27.01.2014
comment
Кажется, это связано с обратной косой чертой в конце. Пожалуйста, разместите новый вопрос, так как это совершенно другая проблема, чем та, которую вы задали изначально. - person Andriy M; 27.01.2014