批处理 - 计算当前文件夹和子文件夹中文件的行数

Ger*_*hes 4 recursion batch-file counting

这是我的脚本,它的作用是计算当前文件夹中cpp,h,hpp,cs,c文件的行数.

我想要做的是计入子文件夹,但似乎我无法做到这一点.

我做了一些递归尝试,但我无法在当前代码中实现它.

call::CountLines Modules\Output\HTML.Tidy\
goto:eof

:CountLines
setlocal
set /a totalNumLines = 0
SETLOCAL ENABLEDELAYEDEXPANSION
for /r %%f in (%~1*.cpp %~1*.h %~1*.hpp %~1*.cs %~1*.c) do (
for /f %%C in ('Find /V /C "" ^< %%f') do set Count=%%C
set /a totalNumLines+=!Count!
)

echo Total number of cod lines for %~1: %totalNumLines% >> log.txt
Run Code Online (Sandbox Code Playgroud)

如果您知道解决方案或更好的方法,请告诉我.

问候,

斯特凡

dbe*_*ham 7

使用时,路径信息不得在IN()子句内FOR /R.根路径应该遵循/R选项.

@echo off

:CountLines
setlocal
set /a totalNumLines = 0
for /r %1 %%F in (*.cpp *.h *.hpp *.cs *.c) do (
  for /f %%N in ('find /v /c "" ^<"%%F"') do set /a totalNumLines+=%%N
)

echo Total number of code lines for %1 = %totalNumLines% >>log.txt
Run Code Online (Sandbox Code Playgroud)

我不记得的区别,但type file|find /c /v ""find /c /v "" <file可以给出不同的结果.我不记得触发条件是什么,或哪个更好.