より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Windowsのコマンドプロンプトにてバッチでファイルサイズを取得する

Windowsコマンドプロンプトにてバッチでファイルサイズを取得する方法は以下です。

for %%i in (ファイル名) do set 変数=%%~zi

@echo off
rem 任意のファイル名を指定
set file_name = WpfApp.sln
for %%i in (%file_name%) do set file_size=%%~zi
echo filesize = %file_size%

f:id:rimever:20190928131417p:plain
バッチファイルとして実行してください。

あまりにもコマンドプロンプトが独特すぎて、いきなりこれを提示されたところで受け入れ難いですね。

「なぜ、ファイル名を取得するのにforコマンドを使うの?」

「%%~ziってなんのこと?」

と疑問だらけになります。

まずforコマンドの構文としてfor %%i in 〜の%%iは変数のことです。バッチファイル上では%%iと%を二つ記述する必要があります。

そして%%~ziですが、%%~ziというのはforコマンド上での特殊変数です。ファイルサイズを返します。

この特殊変数をfile_size変数にセットしています。

なので変数名が%%rだったら%%~zrでファイルサイズを取得することになります。

for %%r in (%file_name%) do set file_size=%%~zr

で取得しても良いのです。

参考記事

iwakurabit.com

www.ne.jp