バッチファイルでは、特定のファイルサイズを取得し、そのサイズによって処理を分岐させたい場面があります。この記事では、簡単にファイルサイズを取得して条件分岐する方法を紹介します。
ファイルサイズを取得する基本方法
バッチファイルでは、for コマンドと組み合わせてファイルサイズを取得することができます。
基本形は以下の通りです。
for %%A in ("ファイル名") do set FILESIZE=%%~zA
- %%A はループ用の変数
- %%~zA は、対象ファイルのサイズ(バイト単位)を取得する指定です
- set FILESIZE=~ で取得したサイズを変数に格納します
ファイルサイズで条件分岐するバッチファイル
例えば、「ファイルサイズが1MB(1,048,576バイト)以上ならメッセージを出す」という例は次のようになります。
@echo off
setlocal
set FILEPATH=sample.txt
if not exist "%FILEPATH%" (
echo ファイルが存在しません。
exit /b
)
for %%A in ("%FILEPATH%") do set FILESIZE=%%~zA
echo ファイルサイズは %FILESIZE% バイトです。
if %FILESIZE% GEQ 1048576 (
echo ファイルサイズは1MB以上です。
) else (
echo ファイルサイズは1MB未満です。
)
endlocal
set FILEPATH=sample.txt
→ 調べたいファイル名を指定します
if not exist “%FILEPATH%”
→ ファイルが存在しない場合は処理を中断
for %%A in (“%FILEPATH%”) do set FILESIZE=%%~zA
→ ファイルサイズを取得
if %FILESIZE% GEQ 1048576
→ サイズが1MB(1,048,576バイト)以上か判定
注意点
- ファイルサイズはバイト単位で取得されます。
- サイズ取得はローカルファイルのみです。ネットワーク越しのファイルの場合、正確に取得できないことがあります。
- %%A の表記は、バッチファイル内では二重(%%)、コマンドプロンプトで直接試す場合は単一(%)になります。