我想学习一种本机命令行方法来计算 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 的性能提升会相当大。使用一个 437MB 的文件进行测试,该文件包含 8,895,540 行。通过管道传输到 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%