batでコマンドの出力を変数に格納する

今日先輩から教えてもらった小技です。
Linuxとかだと下記のように、処理をバックスラッシュ「`」で囲めばOKですが、
batで同じ様な事ができるのは知らなかったのでちょっと感動しました。

Linuxディレクトリのフォルダ or ファイルの数を格納する場合

set count=`ls -l | wc -l`
echo ${count}

batでディレクトリのフォルダ or ファイルの数を格納する場合

FOR /F "DELIMS=" %%A IN ('DIR /B ^| FIND /C /V ""') DO SET COUNT=%%A
ECHO %COUNT% 

少しロジックがややこしくなりますがいい感じです。
ディレクトリ内のファイルやフォルダの数を数えるコマンドも知らなかったので
ダブルで勉強になりました。


さらに「find」コマンドをこんな風に使うとファイル内の行数を求める事ができます。

ファイルの行数を格納する場合

FOR /F "DELIMS=" %%A IN ('FIND /C /V "" 行数を調べたいファイル名') DO SET LINECOUNT=%%A
ECHO %LINECOUNT% 

いやーやっぱりbatは奥が深いです。


最近めちゃくちゃ暑いのに、
出勤時の電車が弱冷車でいつも泣きそうだ。
やっぱりエコなんだろうか。
男は冷房はMAXに限る。