1
我想移動位於具有特定文件擴展名的所有二級子目錄中的所有文件。批處理,移動位於子目錄中的文件
這是我有:
cd D:\Media\Unsorted
if not exist Movies mkdir Movies
move Movies-Downloaded\*\*.mp4 Movies\
是不是有什麼毛病我的「移動」的語法?我怎麼能做到這一點?
我想移動位於具有特定文件擴展名的所有二級子目錄中的所有文件。批處理,移動位於子目錄中的文件
這是我有:
cd D:\Media\Unsorted
if not exist Movies mkdir Movies
move Movies-Downloaded\*\*.mp4 Movies\
是不是有什麼毛病我的「移動」的語法?我怎麼能做到這一點?
是的,有什麼問題。您只能在指定路徑的最後一個元素上使用通配符。並且在最後一個元素(.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
)到目標。
您確定目錄通配符的\ * \可用嗎?運行命令時是否出現錯誤? –