2014-04-22 59 views
1

我想移動位於具有特定文件擴展名的所有二級子目錄中的所有文件。批處理,移動位於子目錄中的文件

這是我有:

cd D:\Media\Unsorted 
if not exist Movies mkdir Movies 
move Movies-Downloaded\*\*.mp4 Movies\ 

是不是有什麼毛病我的「移動」的語法?我怎麼能做到這一點?

+0

您確定目錄通配符的\ * \可用嗎?運行命令時是否出現錯誤? –

回答

2

是的,有什麼問題。您只能在指定路徑的最後一個元素上使用通配符。並且在最後一個元素(.mp4文件)和前一個元素(.mp4文件所在的文件夾)中使用通配符。這是不允許的。

您必須枚舉這些文件夾,然後爲每個文件夾將其中的文件移動到目標文件夾中。

pushd D:\Media\Unsorted 
if not exist Movies mkdir Movies 
for /d %a in ("*") do if /i not "%~nxa"=="Movies" move /y "%~fa\*.mp4" "Movies" 
popd 

要在批處理文件中以前的命令,百分號必須加倍,也就是替換每個%%%

它所做的是每個目錄(for /d %a其中%a將舉行一個參考(pushd),如果目錄的名稱和擴展名(%~nxa)不等於目標目錄,則使用其完整路徑(%~fa)將所有.mp4文件從源目錄中移出(pushd)到目標。

相關問題