【发布时间】:2020-09-23 17:53:17
【问题描述】:
在 powershell 中运行以下命令
$files = Get-ChildItem -path "C:\temp" -Recurse -Include "*.csv"
ForEach($BusinessFile in $BusinessFiles)
{
$bfiles = get-content $BusinessFile.fullname | Measure-Object -line
$bRowsinFile = $bfiles.lines -1
write-host "Business File Name: " $BusinessFile.name
Write-host "Number of Rows: " $bRowsinFile -ForegroundColor Yellow
}
$records =@{
"File Name" = $businessFile.Name
"Number of Rows" = $bRowsinFile
}
}
$listofFiles = @()
$listofFiles += New-Object -TypeName PSObject -Property $records
$listofFiles | Out-File "c:\test\output.txt"
Invoke-Item "c:\test\output.txt"
基于 write-host 命令的 Powershell 工作正常。 它给出了每个 CSV 文件名以及每个文件上的行数
输出问题: 我只看到 output.txt 文件中的第一个文件名
输出显示: 仅第一个文件的文件名和 # 行
目标: output.txt 是否可以列出所有文件名以及相应的可能行数
谢谢
【问题讨论】:
-
请注意,除非您在 8.3 文件命名方面遇到问题,否则
Get-Content和-filter将比使用-include更快。还要小心使用Get-Content执行此任务,因为它不会考虑可能的多行记录,将这些记录计为多个。最准确但可能最慢的方法是使用Import-Csv和Measure-Object。
标签: powershell calculated-property