2014-07-11 6 views
1

50 개의 하위 폴더가 있으며이 하위 폴더에는 다양한 텍스트 파일이 있습니다. 이 파일의 문자를 계산할 수있는 powershell 스크립트는 무엇입니까?여러 폴더에있는 여러 파일의 문자 수를 계산하십시오.

+0

폴더 당, 파일 당 하나의 총계를 계산 하시겠습니까? 공백은 문자로 계산됩니까? – mjolinor

+0

같은 줄에 문장 부호를 사용 하시겠습니까? 아니면 영숫자만을 찾고 계십니까? – TheMadTechnician

답변

0

귀하의 요구 사항에 아래에 소송을 수행

wc -l */* 

이것은 UNIX 명령입니다.

+0

wc는 powershell 명령조차도 아니며, 이것이 그의 질문에 대한 답을 어떻게 보지 못합니다. – TheMadTechnician

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

"c : temp"의 디렉토리와 서브 디렉토리에있는 모든 txt 파일을 사용합니다. 각 파일의 내용은 Measure-Object로 파이프되어 문자를 계산합니다. 파일의 전체 이름 및 문자 수는 해시 테이블에 저장됩니다. 그 형식으로 당신은 그것을 더 조작 할 수 있습니다. 물론 당신이 할 수있는 다른 것들이 있습니다. 이것은 단지 그것에 관한 나의 취득이었다.

해시에 대한 자세한 내용은 : http://technet.microsoft.com/en-us/library/ee692803.aspx

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

+0

물론 다른 방법도 있지만 간단하고 효과적입니다. 내가 할 일 (문자 배열로 나누고 그런 식으로 계산)보다 훨씬 낫다. – TheMadTechnician

0

cmdlet은 받기 - 컨텐츠 출력 문자열 개체를. http://msdn.microsoft.com/en-us/library/system.string(v=vs.110).aspx

그래서 당신과 같이, 파일 각각에 대해 "문자의 수"라는 계산 된 속성을 contruct 수 있습니다 :

문자열 객체의 속성 "길이"는 문자열의 문자 수에 해당 당신이 폴더의 모든 .txt 인 파일에 대한 문자의 수를 원하는 경우
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 

, (예를 들어 $ TextFiles를) 변수에 위의 명령을 저장하고 사용하는 측정 - 대상 :

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

출력 :

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

파일에 둘 이상의 행이있는 경우, (get-content $ _) 길이는 문자 수보다는 파일의 행 수를 알려줍니다. – mjolinor

0

가 V4를 실행, 나는이를 통해 이전 메일 로그의 분기 공연에 대해 실행 : 약 22 초

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 
----      ----- 
[email protected] 98479479 
[email protected] 88578000 
[email protected] 754640 
[email protected] 61444158 
[email protected] 31823480 
[email protected] 633925 

.

관련 문제