嗨,我有这个小命令批量复制文件,这将有助于,因为我一天做多个特定的副本。 使用xcopy命令时发生此问题。 一切都是为了,但我收到此错误:“无效的path0文件复制”。 这里是代码:
C:WindowsSystem32xcopy /Y "C:UsersRyanDesktopmmars_pub" "C:UsersRyanDesktopDropBoxMMARSmmars_pub"
我正在使用xcopy可执行文件的完整path,因为我在configurationpath环境variables时无法正常工作。 我会想象它应该不会影响结果。 我读了一些关于“防止基于MS-DOS的程序检测Windows”checkBox,应该解决这个问题,但我似乎无法find。 任何帮助赞赏。
并行读取Windows共享目录中的文件
primefaces打开并locking文件
原始答案
C:WindowsSystem32xcopy.exe /Y "C:UsersRyanDesktopmmars_pub" "C:UsersRyanDesktopDropBoxMMARSmmars_pub"
编辑 2015/10/01
虽然原来的问题使用了一个字面的路径,并且指出的解决方案将解决问题,但还有另一个选择。 对于文字路径,如果路径位于变量内,并且可以(或不)以反斜线结尾,则足以确保结尾反斜杠(如果存在)与引号分开,包括结尾点。
xcopy /y "x:source." "x:target" xcopy /y "%myVariable%." "x:target"
这个结尾点不会干扰文件/文件夹名称。 如果有反斜线并结束,那么额外的点将简单地引用相同的文件夹。 如果在Windows文件中没有结束反斜线,并且文件夹不能用点结束它们的名称,则它将被丢弃。
但是如果xcopy命令的输出将被处理,记住这个额外的点将被包含在显示的路径中。
注意 :解决方案在线以上。 继续阅读,如果感兴趣的话,为什么/哪里有问题 。
为什么xcopy "c:source" "d:target"失败,但xcopy "c:source" "d:target"有效?
这两个命令似乎有有效的路径引用,并且…是! 两者都是有效的路径引用,但有两个元素一起使命令失败:
引用文件夹引用(注意: 应该引用它,引用路径是一种很好的习惯,因为你永远不知道它们何时将包含空格或特殊字符)
由于xcopy是一个外部命令,它的参数不在cmd解析器命令行逻辑之后处理。 它们由Microsoft C启动代码处理 。
这个解析器遵循两套规则,即官方规则
由双引号包围的字符串被解释为单个参数,而不管其中包含的空白。 带引号的字符串可以嵌入到参数中。 请注意,脱字符( ^ )不被识别为转义字符或分隔符。
反斜杠从字面上解释,除非它们立即在双引号之前。
如果偶数个反斜杠后面跟着一个双引号,则对于每对反斜杠( \ ),将一个反斜杠( )放在argv数组中,双引号( " )被解释为字符串分隔符。
如果反斜杠的奇数后跟一个双引号,则对于每对反斜杠( \ ),将一个反斜杠( )放在argv数组中,双引号将被解释为转义序列,其余的反斜杠,导致一个文字双引号( " )被放置在argv。
和无证/非官方规则( 如何解析命令行参数 )
在双引号块之外"开始一个双引号块。
在一个双引号块中, "后跟一个不同的字符(不是另一个" )结束双引号块。
在一个双引号块中, "紧随其后" (即"" )导致单个"被添加到输出,并且双引号块继续。
这个解析器将在第一个参数结尾处找到的序列看作是一个不结束/关闭参数的转义引用,它被看作是参数的一部分,而第二个参数的“起始 ”参数只是结束双引号块,但不结束参数,请记住,参数是由白色空间分隔。
所以虽然看起来命令行参数是
vv 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处理的实际参数是
vv .....argument delimiters v......................v .....quoted block xcopy "x:souce" "x:target" ^.....................^ .....argument data arg #1 arg #1 = x:source" x:target"
当结束的反斜杠被删除或包含额外的点时,参数中的结尾引号将不会被转义,它将关闭引用的块,参数之间的空格将被视为分隔符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。