
Windows に保存されたプロジェクト内のコード行数をカウントするネイティブのコマンド ライン メソッドを学習したいと思います。
そうすれば、どこで作業していても、どの言語/IDE を使用していても、コマンドでプロジェクトの規模を知ることができます。
ターゲット ディレクトリ (およびすべてのサブディレクトリ) 内の特定のファイル拡張子をターゲットにしたい場合、Windows コマンド ラインからフォルダー (およびサブフォルダー) 内の改行の数を再帰的にカウントする効果的な方法は何でしょうか。
答え1
Windowsのコマンドラインからの合計行数だけが必要な場合
(for /r "c:\somewhere" %a in (*.c) do @type "%a")|find /c /v ""
答え2
フォルダー内のファイルの行数を再帰的にカウントするにはどうすればよいですか?
次のバッチファイル(countlines.cmd)を使用します。
@echo off
Setlocal EnableDelayedExpansion
for /f "usebackq" %%a in (`dir /b /s %1`) do (
echo processing file %%a
for /f "usebackq" %%b in (`type %%a ^| find "" /v /c`) do (
echo line count is %%b
set /a lines += %%b
)
)
echo total lines is %lines%
ノート:
- 行の総数は に格納されます
%lines%
。 - 静かに実行する場合は必要に応じて取り外します
echo ...
。
使用法:
countlines filename_expression
例:
countlines *.java
次のように出力されます。
processing file F:\projects\test\foo.java
line count is 10
processing file F:\projects\test\test.java
line count is 106
processing file F:\projects\test\Wheel4Applet.java
line count is 350
total lines is 466
参考文献
- Windows CMD コマンドラインの AZ インデックス- Windows コマンド ラインに関連するあらゆることに関する優れたリファレンス。
- ディレクトリ- ファイルとサブフォルダーのリストを表示します。
- 探す- ファイル内のテキスト文字列を検索し、見つかったすべての行を表示します。
- /fの場合- 別のコマンドの結果に対してコマンドをループします。
答え3
これは、PowershellがMyTargetPathで定義する行をすべてカウントします。
Get-Content (Get-ChildItem -Recurse -Path MyTargetPAth -file).FullName | measure -line
まず MyTargetPath を設定してください。
答え4
非常に大きなファイルを処理する場合、PIPE を使用するよりもファイル リダイレクトを使用するとパフォーマンスが大幅に向上します。8,895,540 行の 437 MB ファイルでテストしました。find コマンドへのパイプ処理には 14.6 秒かかりました。リダイレクトを使用すると 5.4 秒しかかかりませんでした。小さいファイルをカウントする場合、もちろんその差はごくわずかです。
@echo off
set "lines=0"
for /f "usebackq" %%a in (`dir /b /s %1`) do (
echo processing file %%a
for /f %%b in ('find /V /C "" ^<"%%a"') do (
echo line count is %%b
set /a lines+=%%b
)
)
echo total lines is %lines%