如何复制名称中带空格的目录

Ang*_*gie 15 directory spaces robocopy

我正在尝试使用robocopy但由于目录名称中的空格而无法使其工作.
我想3个目录复制:我的文档,我的音乐和我的图片为"C:\测试备份",但希望最终的结果是
"C:\测试备份\我的文档"
"C:\测试备份\我的音乐'
'C:\ test-backup\My Pictures'

我的命令不起作用:
robocopy C:\Users\Angie C:\test-backup "My Documents" /B /E /R:0 /CREATE /NP /TEE /XJ /LOG+:"CompleteBackupLog.txt"

无论我做什么,都只是没有发生.有人有什么建议或窍门吗?

小智 72

经过一些反复试验并观察结果(换句话说,我将其破解),我得到了它的工作.

引号是使用带空格的路径名所必需的.诀窍是在结束报价之前的路径名之后必须有一个空格......就像这样......

robocopy "C:\Source Path " "C:\Destination Path " /option1 /option2...
Run Code Online (Sandbox Code Playgroud)

这几乎看起来像一个错误,当然不是很直观.

托德K.

  • 托德,谢谢你。为清楚起见:`"C:\source path\"`(在结束引号之前有一个空格 (4认同)
  • 哇,多么不直观的要求啊!谢谢托德! (3认同)
  • 我在另一个答案中看到了原因——最后一个反斜杠被视为转义字符,所以我不确定你的例子是否适用于这个“关闭引号后的空格”要求?无论如何,感谢您对这种特殊性的提醒(我不是 OP,只是路人)。绝对看起来仍然比任何东西都更像是一个错误,否则 Robocopy 真的很愚蠢。毕竟,它不会被第一个“转义”的引用所迷惑。 (2认同)

小智 21

如果路径不包含尾部反斜杠,则在关闭引号之前无需添加空格,因此以下命令应该起作用:

robocopy "C:\Source Path" "C:\Destination Path" /option1 /option2...
Run Code Online (Sandbox Code Playgroud)

但是,以下将不起作用:

robocopy "C:\Source Path\" "C:\Destination Path\" /option1 /option2...
Run Code Online (Sandbox Code Playgroud)

这是由于此处描述的转义问题:

\ escape可能会导致包含尾部反斜杠的带引号的目录路径出现问题,因为行末尾的结束引号将被转义\".

  • 感谢您提供此行为背后的上下文详细信息。现在它有一些道理,尽管它可能仍然不直观。当然,他们可以/应该以编程方式做得比这更好。在大多数情况下,很容易假设意图是什么。毕竟,它不会被第一个“转义”的引用所迷惑。 (3认同)

Yat*_*wal 9

分开My DocumentsC:\test-backup什么?为什么报价只在附近My Documents

我认为这是一个错字,尝试使用 robocopy C:\Users\Angie "C:\test-backup\My Documents" /B /E /R:0 /CREATE /NP /TEE /XJ /LOG+:"CompleteBackupLog.txt"

[编辑:]由于文档指定的语法(robocopy <Source> <Destination> [<File>[ ...]])说文件,它可能不适用于文件夹.

你必须使用robocopy "C:\Users\Angie\My Documents" "C:\test-backup\My Documents" /B /E /R:0 /CREATE /NP /TEE /XJ /LOG+:"CompleteBackupLog.txt"


小智 8

robocopy 在解释源名称时存在错误。如果您在路径末尾包含一个反斜杠来描述文件夹,它将继续将源字符串包含到该行的其余部分中。IE

robocopy "C:\back up\" %destination% /e 这里没有任何内容会转到目标字符串

robocopy "C:\back up" %destination% /e 但这有效

我可能是错的,但我认为两者都应该有效!