如何遞歸計算資料夾中的換行符?

如何遞歸計算資料夾中的換行符?

我想學習一種本機命令列方法來計算 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

進一步閱讀

答案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%

相關內容