我过去做了一个小脚本,搜索特定位置的大文件。现在我想用我的结果创建一个.txt文件。但遗憾的是,我没有设法正确放置cmdlet。我排除了其他东西,但是,我遇到了一些麻烦。
get-childitem "c:\projects" -recurse | where {$_.length -gt 50mb } | foreach-object {write-host $_.FullName ("{0:N2}" -f ($_.Length / 1MB)) "MB" -ForegroundColor "green" }
我试过tee对象并outfile变量,我试着把out文件放在最后,我试着把它放在格式化之前。
只有在格式化之前放置它才有效。但我喜欢在我的.txt格式化格式,在其他地方它只是创建了一个空白的.txt文件。
答案 0 :(得分:2)
这里有一个方法,使用带有-Encoding String的Add-Content
来附加数据。还将格式化的大小填充到变量中,因此我们可以将它们传递给避开管道对象并允许我们在控制台中保持绿色。
get-childitem "C:\projects" -recurse | where {$_.length -gt 50mb } | foreach-object {$a = $_.FullName + " " + ("{0:N2}" -f ($_.Length / 1MB)) + "MB" ; write-host $A -ForegroundColor "green";Add-Content -Path C:\text.txt -Value "$a" -Encoding String}
#
答案 1 :(得分:2)
Get-ChildItem "c:\projects" -recurse |
where {$_.length -gt 50mb } |
select FullName, @{Name="MB";Expression={("{0:N2}" -f ($_.Length / 1MB))}} |
Format-Table -Wrap -AutoSize |
Out-File -FilePath size.txt -Append
我删除了前景色,因为你无法输出它,并添加了Format-Table -AutoSize来修复长路径截断。