Having XCopy copy a file and not overwrite the previous one if it exists (without prompting)
我正在向远程计算机发送命令,以使其复制文件。
我希望复制文件,但不要覆盖具有相同名称的先前文件(如果存在)。
我还需要该命令在没有任何提示的情况下运行(xcopy喜欢提示我指定的目标名称是文件还是目录,它还会提示有关覆盖文件的信息)。
它将复制较新的文件,并且由于我们可以假定现有文件具有相同的时间戳,因此您将仅复制不存在的文件。
以防万一有人发现:
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会使其覆盖。和/我将摆脱文件/字典提示。有关所有选项,请参见
我必须复制并重命名文件,因此得到有关创建文件或目录的提示。
这是我这样做的一种相当"骇人的"方法:
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 |