如何将robocopy与大量排除文件一起使用?


10

我想使用robocopy移动大量文件,但白名单中的文件除外。白名单包含大约150个不同名称的文件。当我将白名单的文件名复制并粘贴到命令行中时(使用/xf参数),robocopy将截断该列表。

c:\test> robocopy src dest *.ext /xf exclude1.ext exclude2.ext exclude3.ext ... exclude 299.ext exclude300.ext

结果是:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows

-------------------------------------------------------------------------------

  Started : Fri May 24 14:09:31 2013

   Source : C:\test\src\
     Dest : C:\test\dest\

    Files : *.ext

Exc Files : exclude1.ext
            exclude2.ext
            exclude3.ext
            ....
            ....
            exclude200.ext
            exclude201.ext
            exclu

然后:

'exclude250.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude251.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude252.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude253.ext' is not recognized as an internal or external command,
operable program or batch file.

不幸的是,白名单中的文件是手工挑选的,不能用通配符过滤。

有办法解决这个问题吗?

Answers:


13

Windows中的命令行长度有一个限制(我认为这是2048个字符)。

您应该使用指定的排除列表的一小部分生成一个作业文件(使用/save:filename参数)以获取语法,编辑该文件以包括完整列表,然后使用该/job:filename参数运行它。

作为参考,可以在此处找到该工具的文档。


0

事实证明,robocopy作业文件的语法并不那么复杂。

对于您的特定情况,您可以通过创建具有以下内容的robocopy作业文件来实现所需的目标:

/XD
exclude1.ext
exclude2.ext
exclude3.ext
....

如果您也想对文件进行同样的操作,那么您的robocopy作业文件将如下所示:

/XD
exclude1.ext
exclude2.ext
exclude3.ext
....

/XF
file1.ext
file2.ext
file3.ext
....

通过使用相同的逻辑,您可以将任何其他选项从命令行移动到作业文件。


0

尝试在/ XF filename1 * .ext filename2 * .ext filename3 * .ext之后使用通配符。仅当您知道文件名在整个结构中是唯一的时,此方法才起作用。您可以更改要排除的文件的命名约定,以解决此限制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.