当设置排除参数时,xcopy返回错误“无效的参数数目”

发行:

xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y 

按预期工作。 然而:

 xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:"Y:\...\exclude.txt" 

返回错误:

参数个数无效

当path名(包含空格)没有用引号括起来时,也会出现这种情况。 但是,情况并非如此。 path(编辑为了可读性)都正确对应。 语法(根据产品文档 – Xcopy )也是正确的。 关于操作系统是Windows XP Professional x32 SP3。

为什么第二个CMD返回错误,以及如何解决? 我不寻找替代xcopy(robocopy等)。

XCOPY是一个回到DOS时代的旧命令。 它看起来像/ EXCLUDE选项从来没有更新,以支持长文件名。 呃:-(

如果删除引号,则空格之后的文本将被解释为附加参数,并且会显示“无效的参数数目”错误。 如果保留引号,则会将引号视为路径的一部分,并报告找不到该文件。

我相信你有三个可能的解决方案:

1)在路径中使用短的8.3文件夹名称。

当然,如果你的卷被禁用了短名称,这是不行的。

2)使用SUBST命令为您的麻烦路径创建驱动器别名。

 subst Q: "Y:\path with spaces" xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:Q:exclude.txt subst Q: /d 

这可能是一个问题,如果你不知道一个免费的驱动器号。

3)(我最喜欢的)简单的PUSHD做麻烦的路径并从那里运行命令 🙂

 pushd "Y:\path with spaces" xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:exclude.txt popd 

请参阅https://sevenx7x.wordpress.com/2009/01/02/xcopy-with-exclude-option-shows-cant-read-file/和http://forums.majorgeeks.com/showthread.php?t= 54300获取更多信息。

/EXCLUDE:file切换不会排除指定的文件。 根据xcopy命令参考 :

/exclude:FileName1[+[FileName2][+[FileName3](…)]指定文件列表。 至少必须指定一个文件。 每个文件将包含搜索字符串 ,每个字符串在文件的单独一行中。 当任何字符串匹配要复制的文件的绝对路径的任何部分时,该文件将被排除在复制之外。