我对批处理脚本比较陌生。 作为新手,我在编写脚本时发现这两个命令都很有用。 xcopy和robocopy之间的主要区别是什么?
我对批处理脚本比较陌生。 作为新手,我在编写脚本时发现这两个命令都很有用。 xcopy和robocopy之间的主要区别是什么?
Robocopy在新版本的Windows中取代了XCopy
是的,我同意Mark Setchell的观点,它们都很糟糕。(由Microsoft提供)
更新:
XCopy 返回代码:
0 - Files were copied without error.
1 - No files were found to copy.
2 - The user pressed CTRL+C to terminate xcopy. enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command line.
5 - Disk write error occurred.
Robocopy 返回代码:
0 - No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized.
1 - One or more files were copied successfully (that is, new files have arrived).
2 - Some Extra files or directories were detected. No files were copied Examine the output log for details.
3 - (2+1) Some files were copied. Additional files were present. No failure was encountered.
4 - Some Mismatched files or directories were detected. Examine the output log. Some housekeeping may be needed.
5 - (4+1) Some files were copied. Some files were mismatched. No failure was encountered.
6 - (4+2) Additional files and mismatched files exist. No files were copied and no failures were encountered. This means that the files already exist in the destination directory
7 - (4+1+2) Files were copied, a file mismatch was present, and additional files were present.
8 - Some files or directories could not be copied (copy errors occurred and the retry limit was exceeded). Check these errors further.
16 - Serious error. Robocopy did not copy any files. Either a usage error or an error due to insufficient access privileges on the source or destination directories.
关于Robocopy返回值的更多详细信息,请参见此处:http://ss64.com/nt/robocopy-exit.html 以及XCopy的相关信息请参见此处: https://ss64.com/nt/xcopy.html
最重要的区别是,robocopy
在出现错误时通常会重试,而xcopy
则不会。在大多数情况下,这使得robocopy
更适合在脚本中使用。
补充:为了完整起见,有一个已知的边缘案例问题,即它可能在复制包含无效UTF-16序列名称的文件或目录时悄悄失败。如果这对您造成问题,您可能需要查看第三方工具或编写自己的工具。
robocopy
了。绝对不安全。微软在发布这样的程序之前应该彻底完成它。你从网络上复制,网络断开,然后它试图从当前位置移动文件... 它是 C:\Windows\System32
。干得好,微软,20年过去了还不能制作一个能够正确移动文件的程序。我会向我的学生展示这个例子,让他们明白为什么他们必须转向Linux。 - Olivier Pons我发现Robocopy有更多选项,但我并没有发现它们特别有用,除非我在做一些特殊的事情。
我对几个复制例程进行了基准测试,并发现XCOPY和ROBOCOPY是最快的,但令我惊讶的是,XCOPY始终比Robocopy表现更好。
具有讽刺意味的是,Robocopy会重试失败的复制,但在我的基准测试中,它也经常失败,而XCOPY从未失败过。
我的基准测试后,我进行了完整文件(逐字节)的文件比较。
这是我在测试中使用的Robocopy开关:
**"/E /R:1 /W:1 /NP /NFL /NDL"**.
如果有人知道更快的组合方法(除了删除/E,因为我需要它),我很乐意听听。
Robocopy 的另一个有趣/令人失望的事情是,如果复制失败,默认情况下会重试1000000次,每次间隔30秒。 如果您正在运行一个长时间的批处理文件而没有人看管,当您在几个小时后回来时,可能会非常失望,发现它仍在尝试复制特定的文件。
/R 和 /W 开关可让您更改此行为。
如果有办法在这里附加文件,我可以分享我的结果。
我还在我的测试中包括了 FastCopy 和 Windows Copy,每个测试运行了10次。 注意,它们之间的差异相当显着。 95%置信区间没有重叠。
inline
代码 ` (它是波浪线/tilde键,看起来像这样:~),并且输入两次换行符以获得新段落。 - Xander Luciano听到人们仍然在* {COPY}的手中受苦,这让人感到痛心。 我是一名经验丰富的批处理和Bash脚本编写者,我推荐使用rsync,您可以在cygwin(cygwin.org)中运行它,或者您可以找到一些浮动的二进制文件。 并且您可以将输出重定向到2>&1,以便将其记录到日志文件(如out.log)中以供以后分析。 祝大家好运,是时候重新热爱生活了。 = M.Kaan =
robocopy
解决了我的速度问题(虽然没有复制验证,我会把速度差异归咎于此,尽管在Linux下它仍然非常快)。 - JohannRobocopy非常适合镜像或同步目录。它还会检查目标目录中的文件与要复制的文件进行比较,并且不会浪费时间复制未更改的文件。
如果你和我一样喜欢自动化来进行每日备份等任务,“运行小时数 - /RH”变得非常有用,而无需任何交互。这是Robocopy支持的功能。它允许您设置副本应该在何时执行,而不是像XCopy那样根据命令时间。您将在任务列表中看到robocopy.exe进程,因为它将在后台运行以监视时钟并在正确的时间执行复制。
Robocopy支持使用“/MON”或“/MOT”命令对文件和目录进行监视。
Robocopy在复制文件时额外支持复制文件的“存档”属性,支持复制所有属性,包括时间戳、安全性、所有者和审计信息。
希望这可以帮助您。
xcopy D: E: /C/H/E/R/Y/D /EXCLUDE:C:\EXCLUDE.TXT
排除文件需要由PC管理员创建,否则将无法解释。在排除文件中,每行添加一个目录。然后,使用命令行界面,以管理员身份执行xcopy命令。另外,我需要创建一个到我的其他PC的链接,例如"net use E:"等等...否则,如果从右键菜单创建了映射驱动器,驱动器字母将无法工作。
就速度而言,我发现xcopy比robocopy快得多。我尝试了多个robocopy参数,但在我的会话中它似乎从未像xcopy那样起飞。此外,我可以随时使用"CMD C"选项停止复制会话,并在之后返回到离开的地方,没有任何问题。Robocopy表现出相同的行为,所以在这方面没有区别。
它们都是垃圾!XCOPY
太老旧且不可靠,因此微软用ROBOCOPY
替换了它,但后者仍然是垃圾。
不过不用担心,这是由原始的COPY
命令开始的一个悠久传统,直到今天,它仍然需要/B
开关才能正确地复制!
copy
命令会在处理二进制文件时使用/b
参数。我不确定你为什么讨厌robocopy
,你提供的链接只显示了archive
属性被按设计方式使用。 - foxidrivecopy
和 xcopy
都是DOS的组成部分,它们必须是分开的,因为copy
是内部命令,而xcopy
则是外部命令。 Windows将它们都包含在内,以保持向后兼容性。 robocopy
命令最初由一个独立团队开发,最初用于内部使用,后来作为资源工具包的一部分。直到后来,它才成为Windows的内置部分。(我对“shell编程没有陡峭的学习曲线”这种说法也有怀疑。 语法相当晦涩!) - Harry Johnston
robocopy "." "D:\tmp\" /MOV
"(**D:
**是物理硬盘)。这个命令可以正常工作。关闭共享该目录的计算机(在复制时)。这个命令将无法正常工作,并出现大量错误,请按CTRL-C并重试。robocopy
尝试移动C:\Windows\System32
目录中的所有文件。确实如此。您不能使用xcopy
完成此操作。 - Olivier Pons