フォルダバット内の全ファイルの個数と合計サイズの一括統計処理
最近、なぜかパソコンのディスク容量が徐々に減ってきて、しばらくするとまた2~3ギガバイトの容量が解放される。そのフォルダ以下にどんなファイルが生成されて記憶容量を奪っているのか、階層別に監視して最終的に原因を突き止めたい。
インターネットから、コマンドラインで指定したフォルダ・ディレクトリのサイズを表示するバッチ・プログラムを見つけたが、満足できるものではなく、私の使用には必ずしも適しているとは思えない。
最初のプログラムは、フォルダー内のファイルのサイズを表示するものですが、レベル別に表示したいので、私の要求を満たしていません。そのプログラムは次の通りです。
@echo off
echo.
set /p dirPath=please input folder path:
set /a s=1024*1024*1024
for /f "tokens=3 delims= " %%i in ('dir /s /a /-c "%dirPath%" ^|findstr a file') do (set z=%%i)
echo.
echo Folder: %dirPath%
set d=bit
if %z% gtr 1024 set /a "z>>=10"&set d=KB
if %z% gtr 1024 set /a "z>>=10"&set d=MB
if %z% gtr 1024 set /a "z>>=10"&set d=GB
echo The total size of the echo is: %z% %d%&echo.
if %z% LSS %s% echo The contents of the folder is less than 1G
pause>nul
2つ目のプログラムは、現在のフォルダー以下の階層ディレクトリを表示するが、各下位フォルダーのサイズをループ表示しないもので、次のようなプログラムになっています。
@echo off
setlocal enabledelayedexpansion
(for /d %%a in (C:\KuGou\*) do (
set/a n=z=0
pushd "%%a"
for %%b in (*. *.) do (
set/a n+=1,z+=%%~zb
)
set/a "z>>=20"
popd
echo;%%a [!n!a!z!M]
))>stats.txt
pause
上の2つのプログラムで、私はそれらを統合し、私が必要とするものに近いはずのプログラムを合成するつもりなので、それを実行し、下の私のプログラムを見てみましょう。
@echo off
setlocal enabledelayedexpansion
echo.
set /p dirPath=please input folder path:
echo %dirPath%
echo.
for /d %%a in (%dirPath%\*) do (
set /a zz=0
for /f "tokens=3 delims= " %%t in ('dir /s /a /-c "%%a" ^|findstr a file') do (
set zz=%%t
)
set d=bit
if !zz! GEQ 1024 set /a "z1=!zz!>>10"&set d=KB
GEQ 1024 set /a if !z1! GEQ 1024 set /a "z2=!z1!>>10"&set d=KB
GEQ 1024 set /a "z3=!z2!>>10"&set d=KB
echo Folder: %%a ,size is: !z3!GB = !z2!MB = !z1!!d!
)
for /f "tokens=1-4 delims= " %%i in ('dir /a /-c %dirPath% ^|findstr individual files') do (
set/a ss=%%k
set/a ss>>=10,d=bit
if !ss! GEQ 1024 set /a "s1=!ss!>>10"&set d=KB
GEQ 1024 set /a if !s1! GEQ 1024 set /a "s2=!s1!>>10"&set d=KB
GEQ 1024 set /a "s3=!s2!>>10"&set d=KB if !s2!
echo In "%dirPath%" root directory there are %%i %%j ,total size:!s3!GB = !s2!MB = !s1!!d!
)
pause
コード 4: すべてのファイルとサブフォルダー下のすべてのファイル、およびサブフォルダー下のサブフォルダー下のファイル、およびサブフォルダー下のサブフォルダー下のファイルを含む統計フォルダーを実行することを実装します。
@echo off
setlocal enabledelayedexpansion
(for /f "delims=" %%i in ('dir /s/b/l/ad') do (
cd "%%~fsi"
set/a a=0,n=0
for /f "delims=" %%a in ('dir /b/l/aa') do (
set/a a+=1,n+=%%~za 2>nul
)
set/a n/=1048576
echo.%%~fi : !a! : !n!MB
)) >stats.txt
pause
MBは小数点以下をサポートしておらず、小さすぎるファイルは0として表示され、削除することができます
set/a n/=1048576
を削除し、MBをバイト単位で削除します。
またはKBを修正したものを使用します。
set/a n/=1024
echo.%%~fi : !a! : !n!KB
Code 5: 純粋なバッチ処理では数の計算に限界があるため、バッチ処理とawkの組み合わせでこの問題を解決する。
ドラッグ&ドロップで実行する必要がある
# & cls & (for /f "delims=" %%a in ('dir/a-d/b/s %1') do @echo %%~za) | gawk -v path=%~n1 -f %0 >con & pause & exit
{sum+=$0}
END{
printf "%s total folder size is: \n%.2f byte\n%.2f MB\n%.2f GB\n",path,sum,sum/1024/1024,sum/1024/1024/1024
}
gawk 4.1.0 のダウンロードはこちらから。 https://www.jb51.net/softs/515570.html
手順はあまり説明されていないので、一目でわかると思いますが、他の人がまとめたものを組み合わせて、メソッドを呼び出すだけです。
1:ダブルクリックで実行し、プロンプトに従ってビルドする必要があるフォルダのパスを入力します。
2:「スタート」-「ファイル名を指定して実行」-「cmd」で、batファイルが格納されている場所を探し、batファイル名を直接入力して実行します。
3つ目 例えば、ファイルに直接出力することもできます。C:\>f3.bat>111.txt 入力後はカーソルが点滅するだけなので、その時点でフォルダパスを直接入力することができます。
注意:ファイルへの出力フォームを使用する場合、プログラムの実行が終了したときに自動的に終了し、プログラムの中に残らないように、コードの最後にある一時停止行を削除してください。
上記の2つのプログラムは "Batch House" のもので、今後の追跡とレビューのためにアドレスは以下の通りです。
関連
-
バッチバットは、同じ内容のtxtテキストの最初の列の最後の列に数字を追加する
-
Windowsでbatコマンドライン方式でIEのプロキシサーバー設定を変更する
-
Windowsのbatスクリプトコマンドを使用してワンクリックでMySQLサービスを開始する方法
-
バッチスクリプトによる特定ディレクトリでのGit-Bashウィンドウの立ち上げ
-
DOSコマンドラインからHaoZipでファイルを圧縮する方法
-
管理者ユーザーを作成するためのdosnetの実装
-
IPアドレス自動設定一括コード共有
-
ワンクリックcmdでJavaの環境変数を表示、変更(上書き、追加)などを設定。
-
バッチ処理でftpディレクトリにファイルをアップロードする方法
-
Filemanのファイル名をフォームの対応する名前に一括インポートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン