如果我在Windows 8.1计算机上执行以下命令:
robocopy "C:\Temp\A\" "C:\Temp\B\"
由于以下问题导致Robocopy失败:
Source : C:\Temp\A" C:\Temp\B"\
Dest -
...
ERROR : No Destination Directory Specified.
看起来\
被用作某种转义字符(在Windows命令行中不是正常行为)最终的\"
甚至被转换为"\
我做的根本不明白。为什么会这样?
注意:这不是命令行的默认行为,如果他们在robocopy中使用了argv[1]
和argv[2]
,他们就会检索到正确的参数。
为什么他们使用自己的命令行解析?在最后一小时,我真的很困惑......
答案 0 :(得分:0)
您应该省略尾部反斜杠。
来自http://ss64.com/nt/robocopy.html:
如果来源或目的地是“引用长的foldername”,那么 不包括尾部反斜杠,因为这将被视为转义 字符,即“C:\ some path \”将失败,但“C:\ some path \\”或 “C:\有些道路。”或“C:\ some path”将起作用。
答案 1 :(得分:0)
robocopy
也不例外。任何可执行文件都使用自己的行解析器来确定发送给它的参数。操作系统只是使用API来创建进程并向其传递一个要作为参数处理的字符串。该进程可以根据需要处理字符串。
在robocopy
的情况下,使用的解析器是标准的Microsoft C启动代码。此解析器遵循here描述的规则,并在完整列表中找到
以反斜杠开头的双引号,",被解释为 文字双引号(")。