【问题标题】:xcopy returns error "Invalid number of parameters" when exclude parameter is set设置排除参数时,xcopy 返回错误“参数数量无效”
【发布时间】:2015-06-04 18:47:04
【问题描述】:

发行:

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"

返回错误:

参数个数无效

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

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

【问题讨论】:

    标签: windows batch-file cmd xcopy


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      /EXCLUDE:file 开关不会排除指定的文件。根据xcopy command reference

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

      【讨论】:

      • 我相信 OP 已经明白了。问题是所需路径包含空格,如果您在排除文件路径周围包含引号,则 XCOPY /EXCLUDE 选项不起作用。
      猜你喜欢
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多