2011-09-18 186 views
11

我想写一个Windows批处理文件,让我来给定的源目录中的所有目录移动到该源目录中存在的目标目录的目录。Windows批处理命令将所有文件夹中有例外

很明显,我的move命令只需要应用于目录,并且也排除了正在处理的目标目录。

这可能与Windows批处理命令?

回答

10

Robocopy(目前在最新版本的Windows或从WRK )可以做到这一点,只需使用/xd开关从副本中排除目标目录;包含在Windows 7

robocopy c:\source\ c:\source\target\ *.* /E /XD c:\source\target\ /move 
+0

什么关于多个例外或多个目录跳过移动?通过添加,也可以改善您的答案。 –

1

这是行不通的 - 你会得到一个错误,告诉你的目标目录是源目录左右里面,即使你明确排除的目标目录。你可以做的是将目录移动到不在源代码下的临时位置,然后将它们移动到目标中。

BTW,使用move命令不会让你指定的文件夹排除。对于您可以使用xcopy,但请注意,它会复制的文件夹,而不是移动他们。如果有问题,你可以删除任何你想要的东西,只要确保你不删除目标目录,这是在源目录...

7
FOR /d %%i IN (*) DO IF NOT "%%i"=="target" move "%%i" target 
1

使用ROBOCOPY,我发现/ XD选项并没有阻止也被移动源文件夹。

解决方案:

SET MoveDirSource=\\Server\Folder 
SET MoveDirDestination=Z:\Folder 
FOR /D %%i IN ("%MoveDirSource%\*") DO ROBOCOPY /MOVE /E "%%i" "%MoveDirDestination%\%%~nxi" 

这遍历最高级别文件夹和每个运行ROBOCOPY。

1

注意:上面提到的使用/ move标志的Robocopy会复制文件,然后从源文件夹中删除它们,而不是移动的文件。如果移动大量文件从一个位置到另一个位置在同一磁盘上,这可能是至关重要的(因为此举实际上是瞬时的,而复制是慢得多的操作)

0

这个工作对我来说:

move c:\fromDir\*.* c:\toDir\ 
+0

至少在winserver2012r2,但这仅适用于移动文件的工作,但没有子目录 - 并且不包括对“例外”的任何选项 – quetzalcoatl

相关问题