我必須根據以下層級的文件夾/子文件夾結構組織的數據集,包括文件之外的文件:批量移動隨機命名的子文件夾
我想刪除所有滋擾子文件夾(移動它的內容是外面在同一層級+刪除令人討厭的文件夾),從而結束了這樣的組織的文件:
我怎樣才能做到這一點,使用批處理文件,從命令提示符下運行在Windows 7中?我已經嘗試了一些for%F和%% F的語句,但都沒有工作。感謝任何提示。
我必須根據以下層級的文件夾/子文件夾結構組織的數據集,包括文件之外的文件:批量移動隨機命名的子文件夾
我想刪除所有滋擾子文件夾(移動它的內容是外面在同一層級+刪除令人討厭的文件夾),從而結束了這樣的組織的文件:
我怎樣才能做到這一點,使用批處理文件,從命令提示符下運行在Windows 7中?我已經嘗試了一些for%F和%% F的語句,但都沒有工作。感謝任何提示。
我相信以下將實現你的目標當且僅當所有子文件夾和文件名是唯一。如果有重複,那麼所有的地獄都會崩潰。
我還沒有測試過,所以先備份和/或嘗試一次性數據上的代碼。
您必須修改第一個PUSHD命令以指向所有「人員n」文件夾所在的根目錄。
@echo off
pushd "yourRootWherePersonFoldersReside"
for /d %%U in (*) do (
pushd "%%U"
for /f "eol=: delims=" %%A in ('dir /b /ad 2^>nul') do (
for /d %%B in ("%%A\*") do (
for /d %%C in ("%%B\*") do (
md "%%~nxC"
for /d %%D in ("%%C\*") do move "%%D\*" "%%~nxC" >nul 2>nul
)
)
rd /s /q "%%A"
)
popd
)
popd
FOR循環的第二必須是FOR/F,而不是FOR/d,因爲/ d具有迭代循環開始後已添加的文件夾的潛力。 FOR/F會在迭代開始之前緩存DIR命令的全部結果,所以新創建的文件夾可以保證不會發生干擾。
沒有任何提示如何區分滋擾和有用既不文件也沒有文件夾這個任務是無法解決的。 – LotPings
您的目標有潛在的主要問題。當您嘗試將它們移動到「人物n」級別時,曾祖父文件夾名稱可能會發生衝突。如果每個有用的文件夾可能有多個子文件夾,則可能會遇到與文件名相同的問題。 – dbenham
@LotPings對不起,如果我不清楚。我試圖在層次結構中指出哪些子文件夾是討厭的文件夾。這些是位於父級文件夾下的兩個子文件夾;和立即包含有用文件的子文件夾。 – z8080