发行:
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](…)]
指定文件列表。 至少必须指定一个文件。 每个文件将包含搜索字符串 ,每个字符串在文件的单独一行中。 当任何字符串匹配要复制的文件的绝对路径的任何部分时,该文件将被排除在复制之外。