メモ:cmd ファイルの行を取得する

コマンドプロンプト / バッチファイル

作成したプログラムのファイル数と行数を調べる機会があり、
手動では大変なので、バッチファイルを試してみた
フォルダ内(サブフォルダを含む)の指定した拡張子の全ファイルの、
ファイル数と行数の合計を求めるバッチファイルを作成したのでその覚え書き

test.txt

作成方法
コマンドのテキストを作成し、拡張子を「.bat」にして保存すればバッチファイルになる
今回は上記テキストを test.bat として保存
実行方法
コマンドプロンプトで、カレントディレクトリに対象のバッチファイルがあれば、
1・ファイル名.bat + Enter で実行される
2・ファイル名 + Enter でも実行できる
絶対パスか相対パスで呼び出せば、どこのファイルでも実行できる
(バッチファイルのコマンドで指定した相対パスは”実行した”ディレクトリ起点になる)
コマンドプロンプトを開かなくても、エクスプローラーで直にバッチファイルをダブルクリックしても実行できる
バッチファイルでバッチファイルを呼び出すことも可能なよう
test.bat をダブルクリックする

コマンドプロンプトが自動的に立ち上がり実行される

バッチファイルに記載したとおりに、条件にあったファイル数とその行の合計数が表示されている
pause を記載しているので、何か押されるまで待機している
何かを押すと、自動的にコマンドプロンプトが終了される
コマンドについて
コマンドメモ
@echo off経過を表示しない
remコメントアウト
set 環境変数の参照/設定/削除
書式set 変数名=値
%変数名%変数の参照は、「%」 で挟む
/a計算時のオプション
for ループ
書式for "オプション" %%変数 in ( 条件式 ) do コマンド
変数はアルファベット1文字
/fファイル内容を1行ずつ読み込むオプション
%%変数バッチファイルに記載する時は
変数は記載・参照共に "%%" は2つ
%変数コマンドプロンプトに直に記載する時は
変数は記載・参照共に "%" は1つ
(' コマンド ')条件式にコマンドを使う場合は
「 ' 」 (クォーテーション)で挟む
do ( コマンド
コマンド )
do の後に()をつけると
コマンドを複数行に分けて記述できる
('… ^| …') 条件式のコマンドに「|」を使う場合
「^」を付ける必要がある
dirファイルやフォルダの一覧を出力
/a-dディレクトリを除いて出力
/b見出/要約を除く、ファイルパスだけを出力
/sサブディレクトリも含めて検索
findファイル内の文字列検索
書式find 'オプション' "検索条件" 検索対象のパス
/cマッチする行数を出力
/vマッチしない行数を出力
/c /v総行数を出力
""検索条件( "" は空文字列を指定)
echo文字列の出力
書式echo 出力内容
内容 > file.txtファイル新規作成 or 上書き
内容 >> file.txtファイル新規作成 or 追記
typeファイルの内容を出力
書式type ファイルパス
pause何かキーが押されるまで待機
exit終了
書式exit "オプション" "エラーコード"
/bバッチプログラムのみの終了
0エラーなし
|[パイプ] コマンドの出力を別のコマンドの入力として渡す
^ [ハット記号(サーカムフレックス; カレットとも)]
(エスケープ) コマンド途中での改行などに使える
Linuxコマンドより扱いが難しいかも
バッチファイルとコマンドプロンプトへの記載で微妙に記載法が違ったり、
変数へのコマンド出力の代入にfor文を使わなくてはならないなど、
作法に少し戸惑う

参考になったサイト

ファイルの行数をカウントするバッチを作ってみた。
Windowsバッチファイルの作成と実行
.bat(バッチファイル)のforコマンド解説。
バッチファイル内で計算を行う
リダイレクトでファイルへ出力するときに追加書き込みを行う
バッチファイルのforループ内で変数を扱う
コマンドプロンプトのmkdirで「既に存在する場合は何もしない」
dir ファイル・ディレクトリの情報を表示する
【Windowsバッチ】コマンド実行結果を環境変数に代入する方法
環境変数の値の参照と設定(SET)
バッチファイルで繰り返し処理を使う(FOR)
ファイル名だけを一覧にしたい−DIR /B /A-D
ファイルの中からテキスト文字列を検索する
echo(文字列の出力)
type ファイルの内容を表示する
DOS コマンド一覧 Exit