【问题标题】:Powershell script to count number of lines ommitting a line containing a specific character用于计算省略包含特定字符的行的行数的 Powershell 脚本
【发布时间】:2012-07-18 16:14:03
【问题描述】:

我对 powershell 很陌生。

如果我省略(忽略)代码中的注释行,在编写脚本以计算 Visual Studio 项目中的总行数时需要帮助。例如: 单引号,如在 vb.net 中。无论哪一行被注释,即以 单引号开头,我不需要在文件的行数中考虑。

到目前为止,我已经成功编写了用于根据文件类型(例如 *.vb 等)计算项目中行数的脚本。如下所示

(dir -include *.cs,*.xaml -recurse | select-string .).Count
  • 我现在需要在计数时如何忽略以单引号开头的行?
  • 您能否建议我可以在上面的代码行中包含一些内容??

任何帮助将不胜感激!

谢谢, 阿什什

【问题讨论】:

    标签: powershell


    【解决方案1】:

    试试

    (gc c:\file.vb | ? { !$_.startswith("'") }).count
    

    评论后编辑:

    试试这个:

    dir c:\myfolder -include *.cs,*.xaml,*.txt -Recurse | % { $count = (gc $_ |  ? { $_ -notmatch '^\s*$|^''|/\*|\*/' }).count; if ($count) {write-host "$_ `tcount: $count"} }
    

    这一项算不算空行,不算以 ' 开头的行,也不算包含 /* 或 */ 的行。

    【讨论】:

    • 感谢您的回复。但是已经有代码用于计算上述文件中的行数。您能否提出一些我可以在现有代码行中标记的内容。
    • @ashishg 你能重新提出这个问题吗?在您的 OP 中,您要求计算行数,排除以 ' 开头的行,并且提供的所有答案都在做这项工作。
    • 这个想法是将您的代码与我的代码合并(如在 OP 中)。我可以做类似 - (gc $filetypes -recurse | ? { !$_.startswith("'") } select-string .).Count 的事情吗? - (这里 $filetypes=".vb",".asmx"..etc)我有多个文件夹中的文件要检查。此外,我想检查多标识符(运算符),如 '、/*、*/、空白行、空格等。如果该行包含任何这些标识符,则不要包括在计数中。感谢您的宝贵时间。
    • @ashishg 我不明白你为什么需要select-string .??
    • 我参考了这里给出的示例 -stackoverflow.com/questions/1244729/… 。实际上你给出的脚本有效,我唯一想要的不是检查 gc 之后提到的文件名,我希望它检查文件类型我希望它检查多个文件夹中的所有文件扩展名。但我不确定我是否可以在 gc 中使用 -recurse。如果您能帮助我了解如何测试多个运算符,那就太好了。
    【解决方案2】:

    获取所有不以单引号开头的行,即使它前面有前导空格或制表符。将结果通过管道传送到Measure-Object 以计算行数。

    Get-Content file.ext | Where-Object {$_ -notmatch "(\s?)+'"} | Measure-Object
    

    【讨论】:

    • 感谢您的回复。但是已经有了用于计算上述文件中行数的代码。您能否提出一些我可以根据我的要求在现有代码行中标记的内容。
    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2020-04-12
    • 1970-01-01
    相关资源
    最近更新 更多