ファイルの行数をカウントするバッチを作ってみた。

2017年4月27日Windows DOS

おはようございます。

今回は、ファイルの行数を一覧に出力する処理を
Windows DOS コマンドのバッチで書いたので、さらっと公開したいと思います。

あんまり需要はなさそうですが
開発をやっていると、突然こういったことを指示される場合があったりします。

Linux であれば、便利なコマンドがあって
ささっと終わらせることができるのですが、Windowsには用意されていません。

なので、バッチを作っておいて次回(があるか分かりませんが)秒速で終わらして
「おお、〇○君。やりおるわい」って言われたいと思います。

スポンサーリンク

利用するDOSコマンド

ファイルの中からテキスト文字を検索する「find」を利用します。
オプションは次のとおり。

FIND

オプション説明
/V指定した文字列を含まない行を全て表示する
/C指定した文字列を含む行の数を表示する
/N行番号を表示する
/I大文字と小文字の区別をしないで検索する

次のファイルを処理してみます。

doradora のサンプルファイル

ブログを初めて2週間が経ちましたが
ほとんどアクセスがなく、さみしいですがめげずに頑張ります。

by doradora

例:オプションなし

>find "doradora" sample.txt

---------- SAMPLE.TXT
doradora のサンプルファイル
by doradora

例:オプション(否定)

>find /V "doradora" sample.txt

---------- SAMPLE.TXT

ブログを初めて2週間が経ちましたが
ほとんどアクセスがなく、さみしいですがめげずに頑張ります。

例:オプション(行数)

>find /C "doradora" sample.txt

---------- SAMPLE.TXT: 2

といった結果となります。

これを利用して次のようにコマンドを実行すると
ファイルの行数を、任意のファイルに出力することができます。
例:“” を含まない行、含む行数を標準入力に出力し、更にテキストファイルに出力する

>find /C /V "" < sample.txt > result.txt

こうすることで、 「result.txt」にはファイルの行数が出力されます。

更にバッチ化し、実行ディレクトリ配下のファイルに対して処理をします。

ソース

@echo off
REM --------------------------------------------------------------------------------------
REM ファイル行数カウントバッチ
REM --------------------------------------------------------------------------------------
REM 概要:
REM 実行ファイルと同じディレクトリに存在するファイルの行数をカウントします。
REM 対象のファイルをフィルタする場合は「FILTER」変数を変更してください。
REM --------------------------------------------------------------------------------------
REM -------------------------------------------------
REM 変数
REM -------------------------------------------------
REM SET FILTER=*.java *.jsp *.js *.css *.xml
SET FILTER=*.js *.css
SET FILE=rowCount.txt
SET CURDIR=%CD%
SET TMPFILE=%CURDIR%\tmp.txt
ECHO [%DATE% %TIME%] バッチ処理開始 > %FILE%
ECHO. >> %FILE%

FOR /R %%I IN (%FILTER%) DO (
find /c /v "" < %%I > "%TMPFILE%"
FOR /F "usebackq" %%t IN ("%TMPFILE%") DO (
ECHO %%~I 行数:%%t
ECHO %%~FI %%t >> "%FILE%"
)
)
ECHO. >> %FILE%
ECHO [%DATE% %TIME%] バッチ処理終了 >> %FILE%

DEL "%TMPFILE%"

上記ソースをテキストファイルに貼り付け、「rowCounter.bat」として保存してください。
(名前は何でもいいです)

行数をカウントしたいファイル群と同じ階層で実行すればOKです。

結果サンプル

bootstrap 4 のソースをダウンロードしてきて、試しに実行してみた結果です。

[2017/04/25 10:28:44.19] バッチ処理開始

C:\work\rowCount\bootstrap-4.0.0-alpha.6-dist\css\bootstrap-grid.css 1339
C:\work\rowCount\bootstrap-4.0.0-alpha.6-dist\css\bootstrap-grid.min.css 1
C:\work\rowCount\bootstrap-4.0.0-alpha.6-dist\css\bootstrap-reboot.css 459
C:\work\rowCount\bootstrap-4.0.0-alpha.6-dist\css\bootstrap-reboot.min.css 1
C:\work\rowCount\bootstrap-4.0.0-alpha.6-dist\css\bootstrap.css 9320
C:\work\rowCount\bootstrap-4.0.0-alpha.6-dist\css\bootstrap.min.css 6
C:\work\rowCount\bootstrap-4.0.0-alpha.6-dist\js\bootstrap.js 3535
C:\work\rowCount\bootstrap-4.0.0-alpha.6-dist\js\bootstrap.min.js 7

[2017/04/25 10:28:44.82] バッチ処理終了

 

まとめ

とりあえず公開しました。
まったく大したものではないですが
急いでファイルの行数を数えないといけない人がいたとして、

何かのお役にたてれば幸いです。

お断り

とはいえ、
ご利用は自己責任でお願いいたします。

ではでは。

スポンサーリンク


関連するコンテンツ

2017年4月27日Windows DOSBAT,Batch,DOS,Windows,ファイル行数

Posted by doradora