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

问题描述 投票:0回答:4

发行:

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"

返回错误:

参数数量无效

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

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

windows batch-file cmd xcopy
4个回答
21
投票

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 了解更多信息。


0
投票

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

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


0
投票

我也花了一些时间才弄好(我也遇到了同样的错误),但最终,这种格式对我有用。与所有 DOS 一样,绝对精度至关重要,因此请随意复制并粘贴以下内容。

xcopy /t /e "C:\Users\username\Your Folder" "C:\Users\user\Your Folder"

0
投票

xcopy a: b: /s /e "C:\Users\iam2s\Downloads\Top.100.90s.Rock.Albums" "E:\Users\Carl\Music op100.90s" 参数数量无效 已复制 0 个文件 ??为什么

© www.soinside.com 2019 - 2024. All rights reserved.