我还在努力解决这个问题: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仅替换一个文件。
为什么会这样做,我该如何解决?
编辑:
原来是一个各种各样的Windows漏洞。 ROBOCOPY
或XCOPY
工作和安静的交换机都能正常工作。
答案 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
答案 3 :(得分:0)
奇怪的事情......
move /?
说(翻译,因为我的帮助是德语):
您必须默认确认覆盖,尽管您从批处理文件中调用。
我刚尝试了这个非常简单的批处理文件:
move test.txt test
test.txt被移入文件夹测试,现有文件被覆盖而无需确认。 当我在提示符(而不是批处理文件)中给出此命令时,它要求覆盖(按设计)
所以你要做的就是删除/Y
(奇怪,但事实)
(使用Win7 - 如果这很重要)