我需要将名为 Profile.V2 的目录中的所有文件夹移出目录,然后删除该目录。我使用下面的 bat 文件来执行此操作,这非常有效,但当我要将文件/文件夹移动到的位置已经存在同名文件夹时,这会导致 bat 文件停止并出现提示,询问是否可以覆盖该文件夹。移动命令有一个参数 /Y 可以抑制提示,但是如果我将它放在 bat 文件中的“移动”之后,它就不起作用了。有人能找出原因吗?它应该放在哪里?
@ECHO OFF
H:
cd Profile.V2
for /f "delims=" %%a in ('dir /b') do (
move "%%a" H:\
)
RD /S /Q H:\Profile.V2
非常感谢史蒂夫
答案1
好吧。我只需要执行“move /Y”。H:\” 据我所知,它的作用与 for 循环相同。
/Y 紧接着 move 和必须大写。
(正式来说它不区分大小写,但我从经验中知道它在某些系统上确实有影响。我一直没能找出原因。)
答案2
移动命令要求目标目录不存在并且如果发生这种情况,则会失败。没有命令行参数可以修复此问题。
您可以考虑使用这个脚本:
@ECHO OFF
H:
xcopy h:\Profile.V2 h:\ /s/e/v/y
RD /S /Q H:\Profile.V2
Xcopy 会将 Profile.V2 目录的内容复制到 H: 驱动器的根目录,并在没有提示的情况下覆盖现有文件。它会创建在 profile.v2 中找到的所有目录,包括空目录。
移动内容可能不是一个理想的目标,因为您的 RD 命令会在未经验证的情况下删除该目录。
要了解命令行参数的解释,请输入:
xcopy /?