让XCopy复制文件并且不覆盖前一个文件(如果存在)(不提示)

Having XCopy copy a file and not overwrite the previous one if it exists (without prompting)

我正在向远程计算机发送命令,以使其复制文件。
我希望复制文件,但不要覆盖具有相同名称的先前文件(如果存在)。
我还需要该命令在没有任何提示的情况下运行(xcopy喜欢提示我指定的目标名称是文件还是目录,它还会提示有关覆盖文件的信息)。


xcopy /d我有很好的结果。

它将复制较新的文件,并且由于我们可以假定现有文件具有相同的时间戳,因此您将仅复制不存在的文件。


以防万一有人发现:
robocopy x: sourcefolder Y: destfolder / s / e / r:0 / z

比xcopy更好,甚至可以在最后提供一张表格通知所有失败或跳过的文件。不提示不覆盖。


好吧,有一定的补救措施!它帮助我节省了在Win10上的大量工作和时间,同时为我们的产品演示编写了设置。

只需尝试使用管道:

@ECHO N | COPY / -Y SourceFiles目标

作为示例,我使用了这段代码,以便获得干净,温和,安静且安全的副本!

1
2
3
@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命令。它有两种模式:添加在那里不存在的文件或替换确实存在的文件。您需要以前的模式:

1
replace <path1> <path2> /A


据我所知,没有办法使其不被覆盖。但/ Y会使其覆盖。和/我将摆脱文件/字典提示。有关所有选项,请参见xcopy /?


我必须复制并重命名文件,因此得到有关创建文件或目录的提示。

这是我这样做的一种相当"骇人的"方法:

1
ECHO F | XCOPY /D"C:\install\dummy\dummy.pdf""C:\Archive\fffc810e-f01a-47e8-a000-5903fc56f0ec.pdf"

XCOPY将使用" F"表示应将目标创建为文件:

1
2
3
4
5
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

我还验证了此命令将单独保留现有文件。 (您也应该:-)


跟随命令复制文件和文件夹,但不覆盖文件(如果已存在)。

1
xcopy"*.*""C:\test"  /s /y /d