如何使robocopy使用包含空格的日志文件?


11

我正在尝试以下命令:

robocopy "x:\dir" "y:\dir" /mir /z /tee /fft /nfl /ndl /eta /log:"x:\path to logs\12-15-11 01 file with spaces.txt"

我收到此错误:

ERROR : Invalid Parameter #10 : "/log:x:\path to logs\12-15-11 01 file with spaces.txt"

编辑#1

原来上述命令是有效的,我的路径中有一个错字。如果您的路径包含空格,则可以将其提供给robocopy的/ log开关,如下所示:/log:"c:\path to a file\robocopy.log"


为我工作。它是否可能在顶部显示更详细的错误?
卡科2011年

您是否在脚本的上下文中而不是直接在命令行中运行该命令。也许还有其他东西正在增加某种逃避?
Zoredache

错误消息表明初始引号在冒号之前而不是在冒号之后;您确定要尝试运行的命令是否如图所示?
哈里·约翰斯顿

很抱歉,我在输入过程中遇到了错字。非常尴尬。感谢大家的及时帮助!我要删除这个问题的程序是什么?还是我可以改写并添加一个答案,表明可以在robocopy的/ log开关的参数周围加上引号?
slm

没有理由删除@slm。如果以上评论之一有助于您发现问题,请他们将其发布为答案,然后将答案标记为正确。如果问题完全是其他问题,请写下您自己的答案并将其标记为答案,以便将来的搜索者会知道要检查是否存在类似的问题。
music2myear11年

Answers:


11

如果您需要提供一个路径,其中包含robocopy的/ log开关的空格,则可以这样操作:

/log:"c:\path to logs files\some log file.txt"

我收到无效错误:参数#11“ / log”。我将其添加到本来可以运行的命令的末尾。
Andrew S

我不再在支持Windows的地方工作,因此无法进行测试。
slm 2015年

确保日志文件的父目录存在。Robocopy不会创建它,可悲的是,如果该目录不存在,则会抱怨cmdline参数。
mojo '18

4

有四种记录方式作为Powershell文档

/log:<LogFile> :将状态输出写入日志文件(覆盖现有日志文件)。

  • 例如: robocopy "c:\a" "c:\b" /log:"c:\copy_log.log"

/log+:<LogFile> :将状态输出写入日志文件(将输出追加到现有日志文件)。

  • 例如: robocopy "c:\a" "c:\b" /log+:"c:\copy_log.log"

/unilog:<LogFile> :将状态输出作为Unicode文本写入日志文件(覆盖现有日志文件)。

  • 例如: robocopy "c:\a" "c:\b" /unilog:"c:\copy_log.log"

/unilog+:<LogFile> :将状态输出作为Unicode文本写入日志文件(将输出追加到现有日志文件)。

  • 例如: robocopy "c:\a" "c:\b" /unilog+:"c:\copy_log.log"

有关更多详细信息,请访问https://technet.microsoft.com/zh-cn/library/cc733145(v=ws.11).aspx


我还将建议添加/tee开关,因为它也可以产生命令行输出,并允许用户在命令行中查看文件复制的进度。
vibs2006 '18

1

当需要管理员权限/或弹出将文件创建到该目录时会发生

因此,尝试拥有一个log / temp目录,并尝试将日志文件添加到该日志目录中

$ mkdir C:\log

例如:

$ robocopy "c:\a" "c:\b" /log:"c:\log\copy_log.log"

0

如果日志文件的路径包含空格或其他一些脚本定界符,请将其包含在引号中,例如EDIT#1和@slm建议。但也请注意,如本文档有关批处理脚本所述,请使用转义符。


经过相当灾难性和不必要的Win 10迁移后,我遇到了同样的问题。
Marc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.