我正在尝试获取目录中所有文件中的行数。我尝试使用某种变量设置为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 :(得分:2)
你需要得到行:
$i=0;ls -File | foreach{$i += [int](get-content $_ | measure-object -line).Lines};$i
我还将-File开关添加到ls / gci以仅获取文件内容。
扩展了别名的版本:
$i=0;Get-ChildItem -File | ForEach-Object {$i += [int](Get-Content $_ | Measure-Object -line).Lines};$i