Powershell - 向现有脚本添加行计数

时间:2016-02-16 16:49:59

标签: powershell

我整理了一个Powershell脚本,该脚本将返回给定目录中所有文件的信息:

Folder Name
File Name
Last Write Time
File Size (MB)

我只是遗漏了最后一条信息而且我花了最后5个小时试图包含每个文件中包含的行数而没有任何成功。如果我能得到一些帮助,我将非常感激,谢谢。这是我到目前为止的代码:

Clear-Host

$UpstreamFile = 'C:\MyFolder'
$OutputFile   = 'C:\FileInformation.csv'

Get-Childitem $UpstreamFile -rec | Where {!$_.PSIsContainer} |
Select-Object @{Name="FolderLocation"; Expression={$UpstreamFile}}, @{Name="FileName"; Expression={$_.Name.ToUpper()}}, 
@{Name="LastWriteTime"; Expression={$_.LastWriteTime.ToString("dd/MM/yyyy HH:mm")}}, @{Name="FileSizeMB";Expression={$_.Length / 1Mb}} | Export-csv -notypeinformation -delimiter '|' -path $OutputFile

1 个答案:

答案 0 :(得分:0)

对于基于文本的文件,您可以将Get-Content的结果传递给Measure-Object,然后选择Select-Object。我不完全确定二进制文件的结果。

Get-Content <filename> | Measure-Object | Select-Object -ExpandProperty Count

这可以包含在您现有的脚本中,方法是在管道之前添加另一个条目到Export-CSV。

Select-Object @{Name="FolderLocation"; Expression={$UpstreamFile}}, 
@{Name="FileName"; Expression={$_.Name.ToUpper()}}, 
@{Name="LastWriteTime"; Expression={$_.LastWriteTime.ToString("dd/MM/yyyy HH:mm")}}, 
@{Name="FileSizeMB";Expression={$_.Length / 1Mb}}, 
@{Name="Rows"; Expression={ (Get-Content $_ | Measure-Object | Select Count) }} | Export-csv -notypeinformation -delimiter '|' -path $OutputFile