使用 xcopy 命令时出现“复制的无效路径 0 个文件”错误

2024-04-16

您好,我有一个小命令可以批量复制文件,这会有所帮助,因为我每天会多次执行此特定复制。使用 xcopy 命令时会出现此问题。一切都按顺序进行,但我收到此错误:“复制的路径 0 文件无效”。这是代码:

C:\Windows\System32\xcopy  /Y "C:\Users\Ryan\Desktop\mmars_pub\" "C:\Users\Ryan\Desktop\Dropbox\MMARS\mmars_pub\"

我使用 xcopy 可执行文件的完整路径,因为我在配置路径环境变量以使其正常运行时遇到问题。我想它不应该影响结果。我在某处读到过有关“防止基于 MS-DOS 的程序检测 Windows”复选框的信息,该复选框应该可以解决该问题,但我似乎找不到该复选框。任何帮助表示赞赏。


原答案

从源文件夹路径中删除结尾反斜杠

C:\Windows\System32\xcopy.exe  /Y "C:\Users\Ryan\Desktop\mmars_pub" "C:\Users\Ryan\Desktop\Dropbox\MMARS\mmars_pub\"

edited2015/10/01

虽然最初的问题使用了文字路径,并且指示的解决方案将解决问题,但还有另一种选择。对于文字路径以及路径位于变量内部并且可以(或不)以反斜杠结尾的情况,只需确保结尾反斜杠(如果存在)与引号分开,包括结束点。

xcopy /y "x:\source\." "x:\target"
xcopy /y "%myVariable%." "x:\target"

此结束点不会干扰文件/文件夹名称。如果有结尾反斜杠,则附加点将仅引用同一文件夹。如果没有结尾反斜杠,就像 Windows 文件和文件夹不能以点结尾其名称一样,它将被丢弃。

但是如果输出xcopy命令将被处理,请记住这个附加点将包含在显示的路径中。


note: 解决方案在线上。如果对为什么/哪里有兴趣,请继续阅读problem.

Why xcopy "c:\source\" "d:\target\"失败但是xcopy "c:\source" "d:\target\" works?

这两个命令似乎都有有效的路径引用,并且......是的!两者都是有效的路径引用,但有两个元素共同作用导致命令失败:

  • 引用文件夹引用(注意:它should被引用,引用路径是一个好习惯,因为你永远不知道它们何时会包含空格或特殊字符)
  • xcopy不是由处理的内部命令cmd但一个可执行文件

As xcopy是一个外部命令,它的参数不会按照以下方式处理cmd解析器命令行逻辑。它们由微软C启动代码 https://msdn.microsoft.com/en-us/library/a1y7w461.aspx.

这个解析器遵循两组规则,官方规则

  • 参数由空格分隔,空格可以是空格,也可以是制表符。

  • 用双引号括起来的字符串将被解释为单个参数,无论其中是否包含空格。引用了一个 字符串可以嵌入到参数中。请注意,插入符号 (^) 不是 被识别为转义字符或分隔符。

  • 双引号前面有一个反斜杠,\", 被解释为文字双引号 (").

  • 反斜杠按字面意思解释,除非它们紧接在双引号之前。

  • 如果偶数个反斜杠后跟双引号,则一个反斜杠 (\) 被放置在每个 argv 数组中 一对反斜杠 (\\) 和双引号 (") 是 解释为字符串分隔符。

  • 如果奇数个反斜杠后跟双引号,则一个反斜杠 (\) 被放置在每个 argv 数组中 一对反斜杠 (\\) 并且双引号被解释 作为剩余反斜杠的转义序列,导致文字 双引号(") 放置在 argv 中。

和无证/非官方规则(命令行参数如何解析 http://www.daviddeley.com/autohotkey/parameters/parameters.htm)

  • 在双引号块之外 a"开始一个双引号块。
  • 在双引号块内"后面跟着一个不同的字符(不是另一个") 结束双引号块。
  • 在双引号块内"紧接着是另一个" (i.e. "")导致单个"要添加到输出中,并且 双引号块继续。

该解析器看到序列\"发现在末尾"first"参数作为转义引号,不会结束/关闭参数,它被视为参数的一部分。还有“开始”的报价"second"参数只是结束双引号块,但没有结束参数,请记住参数是由空格分隔的。

所以虽然它seems命令行参数是

     v           v            v......argument delimiters
      v.........v v..........v ......quoted blocks
xcopy "x:\souce\" "x:\target\"
       ^.......^   ^........^  ......argument data
       arg #1      arg #2

       arg #1 = x:\source\
       arg #2 = x:\target\

实际处理的参数xcopy is

     v                        v .....argument delimiters
      v......................v  .....quoted block
xcopy "x:\souce\" "x:\target\"
       ^.....................^  .....argument data
      arg #1    

      arg #1 = x:\source" x:\target"

当删除结尾反斜杠或包含附加点时,参数中的结束引号将不会被转义,它将关闭引用的块,并且参数之间的空格将被视为分隔符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 xcopy 命令时出现“复制的无效路径 0 个文件”错误 的相关文章

  • 设置 eclipse 进行 Windows 驱动程序开发

    我正在尝试使用 WDK 7 1 0 编写用户模式 Windows XP Vista 和 7 虚拟打印机驱动程序 我打算使用 eclipse IDE 进行开发 所以想知道是否可以进行相同的设置 我希望做以下事情 1 Eclipse 能够识别
  • 如何修复此错误:[WinError 267] 目录名称无效:

    我有一个 python 脚本 它创建一个 GUI 应用程序 在用户选择路径后显示现有文件的列表 系统显示在QlistWidget文件名及其父文件夹 我想从列表中获取所选文件的完整路径 例子 C Users test Desktop test
  • 如何抑制输出并检查命令是否成功?

    我正在尝试编写一个 powershell 脚本来测试 MySQL 登录是否成功 检查是否发生错误 我还想抑制命令的所有输出 成功或不成功 这些是我尝试过的事情 mysql u root password mypass e show data
  • 获取当前文件夹路径

    我想创建一个转换文件的程序 我希望用户能够将可执行文件放在任何目录中 并且在执行该程序时 双击 exe 我希望该程序能够处理exe 文件所在的当前文件夹中的所有文件 程序如何确定当前执行的路径 I tried System Windows
  • 从 CLOB 内的 XML 到带有路径列表的 Oracle 表

    我使用的Oracle版本是 BANNER Oracle Database 10g Enterprise Edition Release 10 2 0 4 0 64bi PL SQL Release 10 2 0 4 0 Production
  • 在运行时拖动窗体上的控件

    我刚刚开始使用 WPF 但我正在尝试添加我的代码 来自 Winforms 使用户能够在运行时将任何控件拖动到他们想要的任何位置 但我似乎无法获取鼠标当前的位置 呃 没有鼠标位置 在 Mouse 事件中 您可以使用 e GetPosition
  • 我可以使用什么 C++ 库在 Windows 上将 PDF 转换为图像?

    我正在开展一个需要分析图像的项目 这些图像的主要来源是网络摄像头 但最近我们被要求添加对上传文件和扫描仪的支持 这在大多数情况下都很好 只是他们希望我们能够使用 PDF 格式的文档 我需要一个原始像素位图进行处理 在 Mac 上 我可以使用
  • 批处理文件中的 %* 是什么意思?

    我见过的用法 在批处理文件和命令行中 有人可以解释一下的典型用法吗 有一个例子吗 它的意思是 命令行中的所有参数 例如 当您想要将命令行从批处理文件转发到另一个程序时 它非常有用 REM mybatchfile cmd echo You c
  • 同步通过 LAN 电缆连接的两台 Windows 7 计算机之间的时间

    我有许多笔记本电脑 它们运行我们的应用程序 同时通过以太网电缆成对连接 但未连接到任何外部网络或互联网 时间 我需要连接对来同步其系统时间 但由于每台计算机都需要能够与任何其他计算机同步 因此我无法将一台计算机定义为时间服务器 而另一台计算
  • 如何从 Emacs 中运行 Cygwin Bash Shell?

    我在 Windows 上运行 GNU Emacs 因此输入 M x shell 启动 Windows 命令行 DOS shell 但是 我希望能够从 Emacs 中运行 Cygwin Bash Shell 或任何其他非 Windows sh
  • shell进程的并行执行

    有没有一个工具可以在 Windows 批处理文件中并行执行多个进程 我发现了一些有趣的 Linux 工具 parallel http mi eng cam ac uk er258 code parallel html and PPSS ht
  • 我将与 ng-include 一起使用什么文件路径?

    我的角度项目的路径是这样的 web server py flask server program app static app js controllers js etc templates index html home html 索引
  • PHP is_file 和服务器根相对路径

    请问如何使用 is file 和 folder file jpg 这样的路径 谢谢你 如果路径以 开头 则表示该路径是绝对路径 当路径是相对路径时 即不以 开头 则采用相对于 php 脚本的路径 如果您希望 folder file jpg
  • Shell 执行将窗口置于前面

    我正在使用此函数从我的 MSI 调用可执行文件 然而 可执行文件的窗口隐藏在我的 MSI 窗口后面 有什么办法可以把它带到前面吗 我尝试在调用之前最小化所有窗口ShellExecute但这仍然没有将可执行窗口带到前面 extern C UI
  • Jenkins 管道中的导出命令

    如何在 Jenkins 管道中添加 导出 unix 命令 我里面有一个詹金斯 舞台 和 步骤 导出命令的语法是什么 我需要使用导出命令设置环境变量 PATH 您可以更新 PATH像这样 pipeline agent label docker
  • 轻量级 Windows 应用程序的最佳开源示例是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Intellij IDEA 中为 Apache Tomcat 指定自定义 JRE 路径?

    问题是如何指定自定义JRE路径为Apache tomcat in Intellij IDEA 当从以下位置启动应用程序时IDEA 看来 只需配置它的路径 路径jvm dll in Apache Tomcat监视器没有帮助 还有其他想法或方法
  • 尝试在 Windows 上执行 package.json 中的脚本会引发 JScript 错误

    所以我正在尝试构建 javascriptair site 在 的里面package json有一个 npm 脚本指向 javascript 命令 package scripts 找到该存储库https github com kentcdod
  • Windows Server / Datacenter:设置 CPU 关联性 > 64 个核心

    SetThreadAffinityMask 允许为 64 个逻辑核心 处理器 设置关联掩码 但是 Windows Datacenter 最多可以有 64 个 CPU 每个 CPU 都有多个内核 请参阅here http social tec
  • 以管理员身份从 cmd 批处理运行 PowerShell 脚本

    我有一个 PowerShell 设置 我想在执行策略可能受到限制并且需要管理员权限的计算机上执行 理想情况下 我可以将其包装在 cmd 批处理中 如下所示 powershell Command Start Process powershel

随机推荐