我正在向远程计算机发送命令以使其复制文件。我希望复制文件,但不覆盖以前的同名文件(如果存在)。我还需要命令在没有任何提示的情况下运行(xcopy 喜欢提示我指定的目标名称是文件还是目录,它还会提示覆盖文件)。
7 回答
我有很好的结果xcopy /d
。
它将复制较新的文件,并且由于我们可以假设现有文件具有相同的时间戳,因此您将仅复制不存在的文件。
以防万一其他人发现: robocopy x:\sourcefolder Y:\destfolder /s /e /r:0 /z
比 xcopy 好得多,甚至在最后给你一个表格,通知任何失败或跳过的文件。不提示不覆盖。
嗯,有一定的补救措施!它帮助我在为我们的产品演示编写设置时节省了我在 Win10 上的大部分精力和时间。
只需尝试使用管道:
@ECHO N|COPY /-Y 源文件 目标
作为一个例子,我使用了这段代码,这样我就有了一个干净、温和、安静和安全的副本!
@FOR /D %%F in ("FooPath") DO @(
@ECHO N|COPY /-Y ^"%%~npdxF\*.*^" ^"GooPath^" 3>NUL 2>NUL >NUL
)
显然FooPath是源,而GooPath是目的地。
享受!
(主要来源:https ://ss64.com/nt/copy.html )
您也可以使用替换命令。它有两种模式:添加不存在的文件或替换存在的文件。你想要以前的模式:
replace <path1> <path2> /A
以下命令复制文件和文件夹,但不覆盖文件(如果已存在)。
xcopy "*.*" "C:\test\" /s /y /d
据我所知,没有办法让它不被覆盖。但是 /Y 会使其覆盖。和/我将摆脱文件/字典提示。查看xcopy /?
所有选项
我不得不复制和重命名文件,所以我得到了有关创建文件或目录的提示。
这是我做到的,相当“hackish”的方式:
ECHO F | XCOPY /D "C:\install\dummy\dummy.pdf" "C:\Archive\fffc810e-f01a-47e8-a000-5903fc56f0ec.pdf"
XCOPY 将使用“F”表示它应该将目标创建为文件:
C:\install>ECHO F | XCOPY /D "C:\install\dummy\dummy.html" "C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html"
Does C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html specify a file name or directory name on the target
(F = file, D = directory)? F
C:\install\dummy\dummy.html
1 File(s) copied
我还验证了此命令会单独保留现有文件。(你也应该:-)