我正在尝试编写一个Windows批处理文件,该文件允许我将给定源目录中的所有目录移动到该源目录中存在的目标目录中。
显然我的move命令只需要应用于目录,并且还要排除目标目录的处理。
使用Windows批处理命令可以实现吗?
答案 0 :(得分:11)
Robocopy(出现在最新版本的Windows中或可从WRK下载)可以执行此操作,只需使用/xd
开关从副本中排除目标目录;
robocopy c:\source\ c:\source\target\ *.* /E /XD c:\source\target\ /move
答案 1 :(得分:7)
FOR /d %%i IN (*) DO IF NOT "%%i"=="target" move "%%i" target
答案 2 :(得分:1)
这不起作用 - 即使您明确地排除了目标目录,您也会收到错误,告诉您目标目录是否在源目录中。您可以做的是将目录移动到不在源下的临时位置,然后将它们移动到目标中。
顺便说一句,使用move
命令不允许您指定要排除的文件夹。为此,您可以使用xcopy
,但请注意它将复制文件夹,而不是移动它们。如果这很重要,您可以删除之后想要的任何内容,只需确保不删除源目录中的目标目录...
答案 3 :(得分:1)
使用Windows 7附带的robocopy,我发现/ XD选项并未阻止源文件夹也被移动。
<强>解决方案:强>
SET MoveDirSource=\\Server\Folder
SET MoveDirDestination=Z:\Folder
FOR /D %%i IN ("%MoveDirSource%\*") DO ROBOCOPY /MOVE /E "%%i" "%MoveDirDestination%\%%~nxi"
这会遍历顶级文件夹并为每个文件夹运行robocopy。
答案 4 :(得分:1)
注意:上面提到的使用/ move标志的Robocopy将复制文件,然后从源文件夹中删除它们,而不是移动文件。如果在同一个磁盘上将大量文件从一个位置移动到另一个位置,这可能是至关重要的(因为移动几乎是瞬时的,而复制操作要慢得多)
答案 5 :(得分:0)
这对我有用:
move c:\fromDir\*.* c:\toDir\