やりたいこと検索

ファイルの行数を数える

 

目次

 

ファイルの行数を数える

ファイルの行数を数えるには、「for /f」コマンドでファイルを一行ずつ読み込んでいき、何回ループが回ったかを最後にチェックして、ファイルの行数を取得します。「for」コマンドについては、「for(繰り返し処理) -コマンド別解説-」に詳しい解説を記載しています。

行数を数えるサンプルファイルとして、以下のようなテキストファイル(sample.txt)を用意しました。このファイルの行数をバッチファイル内で取得します。

全11行あります。

 

まずは、このファイルを一行ずつ読み込んで、表示させるバッチファイルを作成していきましょう。それには「for /f」コマンドを使用して、以下のようなバッチファイル(read_everylines.bat)になります。

上で示した「sample.txt」ファイルを対象に、一行ずつ読み込んで「echo」コマンドで表示させます。「”delims=”」を忘れないようにしましょう。これは、行の区切り文字を指定するオプションですが、ここでは区切り文字を指定していません。詳しくは「ファイルから文字列を読み込む -やりたいことから検索-」を参照して下さい。

これを実行すると、以下のようになります。

一行毎に出力されています。これを少し改行して、ループ内でループ回数をカウントすれば行数を得ることができそうです。以下に、カウント処理を追加したバッチファイル(count_everylines.bat)を示します。

「echo」コマンドによる表示は削除して、変数「count」と「set」コマンドによるカウントを記述しました。最後の行では、最終的な「count」の値を表示してコマンドプロンプトに行数を出力しています。「set」コマンドによる演算について詳しく知りたい方は「バッチファイル内で計算を行う -やりたいことから検索-」をご覧下さい。

実行結果は以下のようになります。

行数は9行となっています。しかし、「sample.txt」を見ると行数は11行あります。これは、「for /f」コマンドによるファイル内容のループでは、空行が無視されてしまうためです。次節では、空行を含んで行数を数える方法を紹介します。

 

空行をカウントする

前節で使用した行数を数えるバッチファイルでは、空白行がカウントされませんでした。これを解決するには、「findstr」コマンドを使用します。「findstr」コマンドは指定した文字列を検索するコマンドです。詳しくは「findstr(ファイル内の指定文字列を検索) -コマンド別解説-」をご覧下さい。

まず、「findstr」コマンドで前節の「sample.txt」ファイル内から文字列「”^”」を検索してみます。「”^”」は行の先頭という意味があります。つまり、行の先頭を検索するということは、すべての行を検索することになります。以下に、バッチファイル(make_sample_tmp.bat)を示します。

「sample.txt」ファイルから行の先頭「”^”」を検索して、「sample_tmp.txt」ファイルに書き出しています。さらに、オプション「/n」を指定しています。これは、行の先頭に行番号を出力するオプションです。これを実行して、「sample_tmp.txt」を確認すると、

となっています。

そして、この「sample_tmp.txt」ファイルをカウントすれば、空行を含んだ「sample.txt」ファイルの行数を得ることができるということになります。以下、前節の「count_everylines.bat」を改良したもの「count_everylines_blank.bat」を示します。

以下、実行結果です。

今度はきちんと空白行までカウントされ、行数は11行となっています。

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメントを残す