はじめに
Windowsのdisk容量(使用率)が増えたたときに、まずどのディレクトリのサイズが大きいかを確認するためのバッチです。他にWindows用duコマンドを追加するなどという方法もあるのですが制約があって追加できない、現状の機能でなんとかしたいというとき用です。元々はワンライナーで作ろうと思ったのですがなんかおっきくなりました。途中でpowershell呼び出してますがそのうちpowershell不要にしたい。win2012,2016,2019で動作確認
使い方
以下のbatファイルを適当なところに配置してコマンドプロンプトから呼び出します。
ファイル名の後ろに引数としてサイズを確認したいディレクトリ階層を指定します。> a4.bat c:\
や > a4.bat "c:\Program Files"
など
a4.bat
@echo off REM バッチ名:a4.bat REM 目的:ディレクトリ単位でサイズを確認したいときに使用 REM 使い方: REM a4.bat [パス] REM REM 使用例) REM > a4.bat c:\ REM > a4.bat "c:\Program Files" など rem 引数を格納 set FINDPATH=%~1 rem 引数から渡されるパスの末尾が「:」かチェック rem 「:」ならexit echo %FINDPATH%>a4path.txt findstr /V /R ":$" a4path.txt if ERRORLEVEL 1 ( echo %FINDPATH% echo パスを確認してください exit /B 1 ) rem 引数から渡されるパスの末尾が「¥」かチェック rem 「¥」なら末尾の「¥」を削除 findstr /R "\\$" a4path.txt if ERRORLEVEL 1 ( set DIR=%FINDPATH% ) else ( set DIR=%FINDPATH:~0,-1% ) rem echo ①%DIR% rem 引数から渡されるパス直下のディレクトリ一覧の格納とチェック rem パスが不正ならexit dir /b /AD-L "%~1" > a4kekka.txt if ERRORLEVEL 1 ( echo %FINDPATH% echo パスを確認してください2 exit /B 1 ) rem パス直下のディレクトリのサイズを出力 FOR /f "delims=," %%f IN (a4kekka.txt) do ( echo %DIR%\%%f dir /s /a "%DIR%\%%f" >a4size.txt powershell -command "(Get-Content a4size.txt)[-2]" )
ここらへんのメンテナンス系のコマンドはデフォルトで入っていてほしいところです。 以上