
我想學習一種本機命令列方法來計算 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 cmd 行相關的所有內容的絕佳參考。
- 目錄- 顯示檔案和子資料夾的清單。
- 尋找- 在文件中搜尋文字字串並顯示找到它的所有行。
- 對於 /f- 根據另一個指令的結果循環指令。
答案3
這將計算所有行,因為 Powershell 在 MyTargetPath 中定義了行
Get-Content (Get-ChildItem -Recurse -Path MyTargetPAth -file).FullName | measure -line
只需先設定 MyTargetPath 即可。
答案4
如果您正在處理非常大的文件,那麼使用文件重定向與使用 PIPE 相比,可以顯著提高效能。使用包含 8,895,540 行的 437MB 檔案進行測試。透過管道傳送到 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%