如何在Windows上递归计算目录中的所有代码行?


21

在Windows 7计算机上,我想要一种快速的方法来确定给定扩展名的文件在目录树中所有文件中的行数。开箱即用的方式有什么好处吗?


1
[你知道在Windows WC(UNIX单词计数命令)的类似计划?] [1] [1]:stackoverflow.com/questions/247234/...

我对wc很熟悉,但愿有W7对等人。
quillbreaker 2011年

@(抢险犯)有。整个Linux / Unix命令行工具包可用于所有基于Windows的平台。gnuwin32.sourceforge.net
美女

Answers:


41

powershell是一个选择。

PS D:\Scratch\maweeras\superuser> dir -Recurse *.txt | Get-Content | Measure-Object -Line

Lines Words Characters Property
----- ----- ---------- --------
  168

1
如果上述不正确,请提供证据和替代解决方案。然后,我将删除/更正我的答案。
maweeras

2
尽管您的回答很有帮助,并且被OP接受,但它不能正确回答OP的问题。问题出在解决方案中的第一个命令中- dir -Recurse *.txt仅处理名称匹配的目录*.txt,同时输出在这些目录及其子树中找到的所有文件。但是OP希望处理所有目录,同时仅输出匹配的文件*.txt。为此,您可以使用dir -Recurse -Include *.txt
辛南

1
这是不正确的,Windows帮助Get-ChildItemdir是其别名)上指出,Get-ChildItem –Path "*.txt" -Recurse获取“当前目录及其子目录中的所有.txt文件”所需的全部信息。链接:technet.microsoft.com/library/hh849800.aspx
Andrew Leap,

@AndrewLeap我刚刚对其进行了再次测试-在带有PowerShell 4.0的Win8上,它可以像您所说的那样工作。但是在带有PowerShell 2.0的Win7上,它具有我描述的问题。dir -Recurse -Include *.txt在这两个版本上似乎都具有预期的结果。
Cinnam'9

有人将如何使用它来同时检入* .txt和* .java(合计)?
杰里米·莫里茨

3

要扩展上述maweeras的答案(对不起,您的评论不够多),您可以通过将逗号分隔的数组传递给-Include来搜索多个文件扩展名。

因此,例如:

dir -Recurse -Include *.ts,*.tsx -Exclude *node_modules* | Get-Content | Measure-Object -Line


2

以下在cmd中起作用:

for %f in (*.TXT) do find /v /c "" "%f"

或在[.bat]中:

for %%f in (*.TXT) do find /v /c "" "%%f"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.