2017-03-16 16 views
1

我試圖獲取我的目錄中所有文件的行數。我試過使用某種我設置爲0的變量,並遍歷所有文件並獲取它們的行號。試圖獲取目錄中所有文件行計數的總和

> $i=0;ls | foreach{$i += [int](get-content $_ | measure-object -line)};$i 

然而,每次我試圖將它添加到我設置爲0的變量時,它拍攝了一個奇怪的錯誤:

Cannot convert the "Microsoft.PowerShell.Commands.TextMeasureInfo" value of type 
"Microsoft.PowerShell.Commands.TextMeasureInfo" to type "System.Int32". 
At line:1 char:19 
+ $i=0;ls | foreach{$i += [int](get-content $_ | measure-object -line)};$i 
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [], RuntimeException 
    + FullyQualifiedErrorId : ConvertToFinalInvalidCastException 

爲什麼會這樣操作無法工作,怎麼可能解決? 有沒有更快的方式獲取目錄中所有文件的行數?

+0

一個襯墊:在你的路徑(DIR | GC |測量對象).Count之間 –

回答

2

你需要讓行:

$i=0;ls -File | foreach{$i += [int](get-content $_ | measure-object -line).Lines};$i 

我還添加了 - 文件交換機LS/GCI只得到文件的內容。

與別名版本擴展:

$i=0;Get-ChildItem -File | ForEach-Object {$i += [int](Get-Content $_ | Measure-Object -line).Lines};$i 
+0

感謝。 「.Count」返回1,但「.Lines」返回文件中行的真實數量,所以我將其更改爲: $ i = 0; ls | foreach {$ i + =(get-content $ _ | measure-object -line).lines}; $ i 哪些工作:) –

+0

我的部分失敗@OrangeReceptacle。升任我的榜樣! – TechSpud

+0

感謝您的更新,我相應地接受了您的回答 –

相關問題