Powershell 获取内容度量对象命令:将其他行添加到实际行数
这是我第一次在这里发帖——如果我没有遵循一定的发帖礼仪,我会提前道歉。我是powershell的新手,但我希望有人能帮我想办法。 我使用下面的powershell脚本告诉我CSV文件中的总行数减去标题。这将生成一个文本文件Powershell 获取内容度量对象命令:将其他行添加到实际行数,powershell,csv,Powershell,Csv,这是我第一次在这里发帖——如果我没有遵循一定的发帖礼仪,我会提前道歉。我是powershell的新手,但我希望有人能帮我想办法。 我使用下面的powershell脚本告诉我CSV文件中的总行数减去标题。这将生成一个文本文件 $x = (Get-Content -Path "C:\mysql\out_data\18*.csv" | Measure-Object -Line).Lines $logfile = "C:\temp\MyLog.txt" $file
$x = (Get-Content -Path "C:\mysql\out_data\18*.csv" | Measure-Object -Line).Lines
$logfile = "C:\temp\MyLog.txt"
$files = get-childitem "C:\mysql\out_data\18*.csv"
foreach($file in $files)
{
$x--
"File: $($file.name) Count: $x" | out-file $logfile -Append
}
我这样做是为了10个单独的文件。但只有一个文件在实际计数的基础上又增加了807行。例如,对于上面的代码,文件中的实际行数(减去标题)是25083。但我上面的脚本生成25890作为计数。我曾尝试对同一类型的文件(相同的数据,不同的日期)进行不同的迭代,但它一直在向行数添加807
即使只运行(获取内容路径“C:\mysql\out\u data\18*.csv”| Measure Object-Line)。行
,我仍然在powershell窗口中看到错误的记录计数
我怀疑csv文件本身可能有问题?我得出这个结论是因为10个文件中有9个生成了正确的行数。感谢您提前抽出时间。要测量csv中的项目,您应该使用
导入csv
,而不是获取内容
。这样,您就不必担心标题或空行
(Import-Csv -Path $csvfile | Measure-Object).Count
这个csv文件肯定有问题。另外,请注意,如果csv的单元格中包含换行符,则会混淆获取内容,因此也请尝试导入csv 我从这个开始
$PathToQuestionableFile = "c:\somefile.csv"
$TestContents = Get-Content -Path $PathToQuestionableFile
Write-Host "`n-------`nUsing Get-Content:"
$TestContents.count
$TestContents[0..10]
$TestCsv = Import-CSV -Path $PathToQuestionableFile
Write-Host "`n-------`nUsing Import-CSV:"
$TestCsv.count
$TestCsv[0..10] | Format-Table
这将让您看到Get Content在拉什么,以便缩小问题的范围
如果它在文件本身中,并且使用Import CSV
无法修复它,我会尝试使用它来检查编码和行尾
- 是一个下拉菜单,与其他csv文件进行比较
- 可以通过(视图>显示符号>显示所有字符)查看。它们应该在整个文件中保持一致,并且应该是其中之一
(通常是来自mac的)CR
(通常来自*nix或互联网)LF
(通常是来自windows的)CRLF