设置exclude参数时,xcopy返回错误"参数数量无效"

use*_*124 9 windows cmd xcopy batch-file

发行:

xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y
Run Code Online (Sandbox Code Playgroud)

按预期工作.然而:

xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:"Y:\...\exclude.txt"
Run Code Online (Sandbox Code Playgroud)

返回错误:

参数数量无效

当路径名(包含空格)未用引号括起时,也会发生这种情况.然而,事实并非如此.路径(为便于阅读而编辑)都正确对应.语法(根据产品文档 - Xcopy)也是正确的.关于操作系统是Windows XP Professional x32 SP3.

为什么第二个cmd返回错误以及如何解决?我不是在寻找xcopy(robocopy等)的替代品.

dbe*_*ham 12

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
Run Code Online (Sandbox Code Playgroud)

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

3)(我最喜欢的)Simply PUSHD做麻烦的路径并从那里运行命令 :-)

pushd "Y:\path with spaces"
xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:exclude.txt
popd
Run Code Online (Sandbox Code Playgroud)



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