我需要运行我的程序:
xcopy s:\* z:\ /E
当xcopy运行时,它会提示是否需要覆盖文件,所以我希望批处理文件在所有情况下都不回答提示。
我该如何做到这一点?
答案 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)
请记住在开始复制/覆盖任何文件之前确保它提示您。