CMD“MOVE / Y”要求确认

时间:2013-12-25 13:36:36

标签: batch-file cmd move prompt

我还在努力解决这个问题:CMD for unable to move files due to string butchering

我的批处理脚本现在看起来像这样,

FOR /F "delims=" %%T IN ('dir G:\ /B /A:D') DO (
  CD "G:\%%T"
  FOR /R %%D IN (*) DO (MOVE /Y "%%D" "G:\%%T")
)
PAUSE

按照我的意图行事,但是一旦找到重复的文件,就会询问它应该为EACH文件做什么(覆盖:是/否/全部)。订购替换ALL仅替换一个文件。

图片:http://imgur.com/aKLsKs1

为什么会这样做,我该如何解决?

编辑: 原来是一个各种各样的Windows漏洞。 ROBOCOPYXCOPY工作和安静的交换机都能正常工作。

4 个答案:

答案 0 :(得分:1)

搞笑bc。

/ y:禁止提示您确认是否要覆盖现有目标文件。

/ - y:提示您确认是否要覆盖现有目标文件。

你试过一点/ y?

答案 1 :(得分:1)

正如你所说,Robocopy做你需要的东西,它做得很聪明。

http://social.technet.microsoft.com/wiki/contents/articles/1073.robocopy-and-a-few-examples.aspx

答案 2 :(得分:1)

从Windows 2000开始,该命令的行为是提示进行确认,而不考虑/y开关,除非该命令是从脚本触发的。

您可以通过在运行move命令之前将环境变量COPYCMD设置为/Y来覆盖它。例如:SET COPYCMD=/Y && move /Y a b

此行为记录在:https://ss64.com/nt/move.html

答案 3 :(得分:0)

奇怪的事情......

move /?说(翻译,因为我的帮助是德语):

您必须默认确认覆盖,尽管您从批处理文件中调用

我刚尝试了这个非常简单的批处理文件:

move test.txt test

test.txt被移入文件夹测试,现有文件被覆盖而无需确认。 当我在提示符(而不是批处理文件)中给出此命令时,它要求覆盖(按设计)

所以你要做的就是删除/Y(奇怪,但事实)

(使用Win7 - 如果这很重要)