【问题标题】:Custom file copy with Robocopy使用 Robocopy 进行自定义文件复制
【发布时间】:2014-02-18 09:55:05
【问题描述】:

文本文件包含文件列表,如下面的代码,但它错误地说%%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

【问题讨论】:

    标签: batch-file robocopy


    【解决方案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
    )
    

    此外,请考虑将所有路径/文件名用双引号括起来,如上所示,以避免出现包含空格和/或特殊字符的名称的问题。

    【讨论】:

    • 我可以从完全限定的路径中删除文件名吗?即我在文本文件中有 C:\Folder A\test.txt,我想以 C:\Folder A\ 作为源代码,而 Test.txt 用于文件(%%~nxa 现在是)
    • %%~dpa 将提取驱动器和路径,没有名称和扩展名。您可以在for 命令的内置帮助中阅读更多关于这些修饰符的信息(for /?,它们列在最后面)。
    • 我认为,但是,看我的编辑,它似乎不起作用。
    • 似乎与尾随反斜杠有关。请发布一个新问题,因为这与您最初提出的问题完全不同。
    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2012-12-02
    相关资源
    最近更新 更多