這取決於您對文件夾大小的定義。如果你只包括直接在文件夾(無視子文件夾)的文件,比它是不是用純批太糟糕了:
我相信這個解決方案的工作,無論你使用的是什麼語言。我依賴的事實是,在DIR列表的前4行之後,只有文件摘要行可以準確地擁有4個空格限制令牌。大小在第3個標記中。我使用/-C
選項來確保大小不包含數千個分隔符。
大小以字節爲單位,所以30kb = 30 * 1024 = 30720字節。
注意,一批只支持32件有符號數,所以IF語句只能用適當大小的< 2 GB的工作。 IF將把大於2千兆字節的任何值視爲等於2千兆字節。如果您的大小閾值爲2千兆字節,則這不是問題。如果您正在查找其中包含3千兆字節的文件夾,它只會成爲一個問題。
替換「yourRootPathHere」的實際根路徑。
@echo off
>30k_folders.txt (
for /d /r "yourRootPathHere" %%F in (*) do (
for /f "skip=4 tokens=3-5" %%A in (
'dir /a-d /-c "%%F" 2^>nul'
) do if "%%B" neq "" if "%%C" equ "" if %%A gtr 30720 echo %%F
)
)
type 30k_folders.txt
的問題,如果你想,當你衡量一個文件夾的大小,包括子文件夾內容是要困難得多。對於純批處理解決方案,這不是一個實際問題。其中一個問題是您必須總結所有子文件夾的大小,並且2GB數學限制可能會很快成爲問題。
的問題很容易在類似VB腳本解決,或JScript或PowerShell的。
我JREN.BAT utility可以砍死容易給你想要的結果。
JREN.BAT是本地運行任何Windows機器上從XP起混合的JScript /批處理腳本。它主要用於使用正則表達式搜索和替換來重命名文件/文件夾。但它有一個/ LIST模式,可用於獲取您想要的信息。它內置了用於獲取文件夾累積大小的功能,並且不限於2GB。
@echo off
call jren "^.*" "(size() > 30*1024) ? path() : ''" /p "YourRootPathHere" /d /list /j /s | findstr . >30k_folders.txt
type 30k_folders.txt
從http://www.robvanderwoude.com/files/diskuse_2k.txt開始並根據需要調整 – DavidPostill
您對文件夾大小的定義是什麼?計算大小時,是否將文件包含在子文件夾中? – dbenham
@DavidPostill謝謝你,我會仔細研究一下,看起來很像在這裏學習,所以它可能仍然需要一點點,但謝謝你! – RorySrdn