2013-07-11 557 views
15

我需要我的程序运行:批处理文件运行XCOPY不覆盖现有文件

xcopy s:\* z:\ /E 

当XCOPY运行时,它会如果一个文件需要被覆盖提示,所以我想在批处理文件来回答无在所有情况下都要提示。

我该如何做到这一点?

+0

怎么样'/ Y'新? – Endoro

+6

刚碰到这个。 '/ D'为我工作。您不必指定日期,在这种情况下,它表示任何*现有文件。 – Noseratio

+0

相关:http://stackoverflow.com/q/191209/945456 –

回答

9

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

+1

这是错误的:使用xcopy/D – Thomas

+0

如果您需要实际使用日期限制,'xcopy/D'不起作用。 – Tukaro

18

我几乎忽略了这个在开关自己。我得到了专家交流文章的帮助。

这里是意义的开关:

/d:M-d-Y复制文件改变或在指定日期之后。 如果没有给出日期,则仅复制那些源时间比目标时间新的文件。

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

足够接近政府工作。

1

为了避免问题Y/N /你可以模拟“类型”使用echo命令为: 呼应N | XCOPY布拉布拉...... 但it's不正确的,因为任何不同的问题将是回答“N”太。

更好的选择在cmd以替换XCOPY是: ROBOCOPY源:目的地:/ E [/ ZB]

在图形模式中,有一种被称为 “TeraCopy的” 应用程序(使用谷歌找到它),该手柄Windows资源管理器复制与几个选项(暂停,忽略[全部],覆盖[所有],最小化,...),我想推荐。

+0

Teracopy非常棒。 –

2

这个工作对我来说:

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

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

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

S将复制在其中的所有子文件夹和文件 ÿ防止任何覆盖提示 d基本上是副本什么比什么已经是在目标

+4

/y是允许xcopy在不提示的情况下覆盖文件。 https://support.microsoft.com/en-us/kb/240268 – DaBlue

+0

为我工作得很漂亮! –