尝试获取目录

时间:2017-03-16 07:46:43

标签: powershell

我正在尝试获取目录中所有文件中的行数。我尝试使用某种变量设置为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

为什么此操作不起作用,如何解决? 有没有更快的方法来获取目录中所有文件的行数?

1 个答案:

答案 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