2011-09-18 71 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

相關問題