32

我需要我的程序运行:

xcopy s:\* z:\ /E

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

我怎样才能做到这一点?

4

6 回答 6

32

我自己在开关中几乎忽略了这一点。专家交流文章帮助了我。

这是意义的开关:

/D:mdy 复制在指定日期或之后更改的文件。如果未指定日期,则仅复制源时间比目标时间新的文件。

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

足够接近政府工作。

于 2014-12-22T22:54:04.803 回答
27

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

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

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

于 2015-10-02T16:32:34.353 回答
9

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

于 2013-07-11T16:55:42.643 回答
3

这对我有用:

echo n|xcopy s:\* z:\ /E    
于 2015-07-31T15:24:37.037 回答
1

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

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

在图形模式下,有一个名为“Teracopy”(使用谷歌找到它)的应用程序,它使用我想要的几个选项(暂停、忽略 [全部]、覆盖 [全部]、最小化、...)覆盖 Windows 资源管理器副本推荐。

于 2015-07-06T16:47:01.033 回答
0

Windows 命令解释器:

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

窗口批处理:

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

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

于 2019-09-05T13:02:44.643 回答