批处理文件以运行xcopy而不覆盖现有文件

时间:2013-07-11 07:21:45

标签: windows batch-file xcopy

我需要运行我的程序:

xcopy s:\* z:\ /E

当xcopy运行时,它会提示是否需要覆盖文件,所以我希望批处理文件在所有情况下都不回答提示。

我该如何做到这一点?

6 个答案:

答案 0 :(得分:25)

我自己几乎忽略了这个问题。专家交流文章帮助了我。

这是重要的转变:

/ D:m-d-y复制在指定日期或之后更改的文件。              如果没有给出日期,则仅复制那些文件              来源时间比目的地时间新。

"如果没有给出日期"部分特别重要。如果没有覆盖现有文件,这并没有完全回答"问题,但如果源文件的现有文件的时间戳不比目标文件新,它会回答它。

足够接近政府工作。

答案 1 :(得分:19)

我多年来一直使用以下标志。它似乎完成了你在问题中描述的所有行为。

xcopy s:\ z:\ /S /Y /D

S将复制其中的所有子文件夹和文件 Y可防止任何覆盖提示 D基本上复制比目的地中已有的更新的东西

答案 2 :(得分:9)

xcopy无法配置为SKIP现有文件,因此您应使用“robocopy”进行复制。

答案 3 :(得分:2)

这对我有用:

echo n|xcopy s:\* z:\ /E    

答案 4 :(得分:1)

为避免问题y / n / all,您可以使用echo命令模拟“输入”: echo n | xcopy blabla ... 但这不正确,因为任何不同的问题也会回答“n”。

在cmd中更好地选择替换xcopy是: robocopy source:destination:/ e [/ zb]

在图形模式下,有一个名为“Teracopy”的应用程序(使用google查找),它会覆盖Windows资源管理器副本,其中包含多个选项(暂停,忽略[全部],覆盖[全部],最小化,......)我想推荐。

答案 5 :(得分:0)

  

Windows命令解释器:

for /f "delims=" %i in ('dir /b /s "source"') do (echo n | xcopy "%i" "destination"  [switches] /-y)

  

Windows批处理:

for /f "delims=" %%i in ('dir /b /s "source"') do (echo n | xcopy "%%i" "destination"  [switches] /-y)

请记住在开始复制/覆盖任何文件之前确保它提示您。