Batch file 使用Robocopy进行自定义文件复制

Batch file 使用Robocopy进行自定义文件复制,batch-file,robocopy,Batch File,Robocopy,其中,文本文件包含文件列表,如下代码所示,但它错误地表示%%a是无效参数,即使它正确地将%%a视为文件名 有办法吗 编辑: ROBOCOPY的文件名参数不能包含路径,无论是绝对路径还是相对路径。它应该只是一个名称(带有扩展名)。(也可以是遮罩。) 如果文本文件包含完整路径,则只能使用~nx组合修饰符提取名称和扩展名: for /f "delims=" %%a in (C:\audit\test.txt) do ( robocopy "C:\Test1" "C:\Test2" "%%~nxa"

其中,文本文件包含文件列表,如下代码所示,但它错误地表示
%%a
是无效参数,即使它正确地将%%a视为文件名

有办法吗

编辑:


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
)
对于(C:\audit\test.txt)中的/f“delims=”%%a(
机器人副本“C:\Test1”C:\Test2”“%%~nxa”/S/E/COPY:DAT/PURGE/MIR/R:1000000/W:30
)

也可以考虑将所有的路径/文件名封装在双引号中,如上面所见,以避免包含空格和/或特殊字符的名称存在问题。

可以从完全限定的路径中删除文件名吗?i、 e.我在文本文件中有C:\Folder A\test.txt,我想最后只使用C:\Folder A\作为源文件,而test.txt作为文件(此时%%~nxa正在使用)
%~dpa
将提取驱动器和路径,不带名称和扩展名。您可以在
for
命令的内置帮助(
for/?
)中了解有关这些修饰符的更多信息。我认为,请参见我的编辑,它似乎不起作用。似乎与后面的反斜杠有关。请发布一个新问题,因为这与您最初提出的问题完全不同。请参阅:
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
)