计算多个文件夹中多个文件中的字符数

时间:2014-07-11 19:51:02

标签: powershell scripting count character

我有一个包含50个子文件夹的文件夹,这些子文件夹中有各种不同的文本文件。我可以运行什么PowerShell脚本来计算这些文件中的字符?

4 个答案:

答案 0 :(得分:2)

$results= @{}
Get-ChildItem -Path C:\Temp -Filter *.txt -Recurse  | ForEach-Object{

    $count = Get-Content $_.FullName | Measure-Object -Character
    $results.Add($_.FullName, $count.Characters)}
$results

输出:

Name                           Value                                                                              
----                           -----                                                                              
C:\Temp\EventCombMT.txt        3724                                                                               
C:\Temp\features.txt           222                                                                                
C:\Temp\2test.txt              12                                                                                 
C:\Temp\winpe\realtekLan\no... 147   

名称:txt文件的完整路径。 价值:字数。我确定它存在,但我找不到它如何计算字符的信息。如果你需要空格来计算,那就有一个开关-IgnoreWhiteSpace:$true

将把所有txt文件放在" c:temp"的目录和子目录中。每个文件的内容都通过管道输入Measure-Object来计算字符数。文件的全名及其字符数将放入哈希表中。在那种形式下,你可以进一步操纵它。当然还有其他一些你可以做的事情。这只是我的看法。

有关哈希的更多信息:http://technet.microsoft.com/en-us/library/ee692803.aspx

Measure-Object http://blogs.technet.com/b/heyscriptingguy/archive/2011/10/09/use-a-powershell-cmdlet-to-count-files-words-and-lines.aspx

答案 1 :(得分:0)

以下是否符合您的要求:

 wc -l */*

这是一个UNIX命令。

答案 2 :(得分:0)

cmdlet Get-Content输出字符串对象。 字符串对象的属性“Length”对应于字符串中的字符数: http://msdn.microsoft.com/en-us/library/system.string(v=vs.110).aspx

因此,您可以为每个文件构建一个名为“Number of Characters”的计算属性,如下所示:

Get-ChildItem -Path C:\Test\*.txt -Recurse |
Select-Object -Property Name, @{N="Number of Characters";E={ (get-content $_).length } }

Output :
Name                      Number of Characters
----                      --------------------
New Text Document (2).txt                   15
New Text Document (3).txt                  852
New Text Document.txt                      629

如果您想要文件夹中所有.txt文件的字符总数,请将上述命令存储到变量(例如$ TextFiles)中并使用Measure-Object:

$TextFiles | Measure-Object -Property "Number of Characters" -Sum

输出:

Count    : 3
Average  :
Sum      : 1496
Maximum  :
Minimum  :
Property : Number of Characters

答案 3 :(得分:0)

运行V4,我通过以下方式运行了大约四分之一的旧邮件日志:

 Get-ChildItem C:\maillogs\*3.s |


foreach {
          &{
          $ofs = ''
          $Count=0
          Get-Content $_ -ReadCount 1000 | 
          foreach { $count += ([string]$_).length } 
          [PSCustomObject]@{Name = $_.Name ; Count = $Count}
          }
         } | Format-Table -AutoSize



Name                       Count
----                       -----
mail.@20140601T164553.s 98479479
mail.@20140602T163433.s 88578000
mail.@20140605T203213.s   754640
mail.@20140608T163523.s 61444158
mail.@20140613T163603.s 31823480
mail.@20140616T203253.s   633925

在大约22秒内。