2016-06-08 52 views
0

我试图使用Pshell获取文本文件的行数。我已经使用的查询,如:在PowerShell中获取文本文件的错误计数

$count = 0 
$reader = New-Object IO.StreamReader $Filename 
while($reader.ReadLine() -ne $null){ $count++ } 
$reader.Close() 

$measure = Get-Content $Filename| Measure-Object 
$lines = $measure.Count 

,但得到一个错误的行数只为一个特定的文本file.It比它应该真的返回一个slihgly更大的计数。

如果我在cmd中使用下面的命令,虽然,我会得到正确的计数:

set file=E:\A.txt 
set /a cnt=0 
for /f %%a in ('type "%file%"^|find "" /v /c') do set /a cnt=%%a 
echo %cnt% 

有人可以帮我这个翻译成PowerShell的? 我非常感谢您的帮助和建议。

+0

做这两个命令产生不同的输出? '(Get-Content“problemtextfile.txt”| Measure-Object).Count'与'(cmd/c type“problemtextfile.txt”| Measure-Object).Count'(当然,请将您的问题文本文件指定为参数) –

+0

是跑他们,他们返回相同(稍大)的数字。 – Sina89

+1

这两个命令返回相同的计数?在记事本等纯文本编辑器中查看“问题”文本文件,然后转到文件的末尾。行号是什么?它应该和PowerShell命令所说的一样。 –

回答

1

我不太确定,但我认为你原来的脚本只计算非空行,也许这就是为什么powershell版本更大的原因。

尝试使用这个脚本,并检查它的确定:

Get-Content $Filename | Select-String "." | measure -line 

问候

相关问题