0

我过去正在做一个小脚本,它在特定位置搜索大文件。现在我想用我的结果创建一个 .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 对象并输出变量,我尝试将输出文件放在最后,并尝试在格式化大小之前放置它。

只有当我将它放在格式化之前它才有效。但我很想在我的 .txt 中有格式化的大小,在其他地方它只是创建了一个空白的 .txt 文件。

4

2 回答 2

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 来修复长路径截断。

于 2014-01-27T11:34:38.040 回答
2

这是一种方法,Add-Content与 -Encoding String 一起使用来附加数据。还将您格式化的大小放入一个变量中,因此我们可以将它们传递给避开管道对象并让我们在控制台中保持绿色。

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}
#
于 2014-01-27T11:31:09.787 回答