尝试使用“dir”命令显示子文件夹和文件的大小。 在谷歌搜索“powershell目录大小”后,我找到了两个有用的链接
这些灵魂很棒,但我正在寻找类似“dir”输出的东西,方便而简单,我可以在文件夹结构中的任何地方使用。
所以,我最终做到了这一点,任何建议都要简单,优雅,高效。
Get-ChildItem |
Format-Table -AutoSize Mode, LastWriteTime, Name,
@{ Label="Length"; alignment="Left";
Expression={
if($_.PSIsContainer -eq $True)
{(New-Object -com Scripting.FileSystemObject).GetFolder( $_.FullName).Size}
else
{$_.Length}
}
};
谢谢。
答案 0 :(得分:8)
第一个小mod是为了避免为每个目录创建一个新的FileSystemObject。将此作为一个函数并将新对象拉出管道。
function DirWithSize($path=$pwd)
{
$fso = New-Object -com Scripting.FileSystemObject
Get-ChildItem | Format-Table -AutoSize Mode, LastWriteTime, Name,
@{ Label="Length"; alignment="Left"; Expression={
if($_.PSIsContainer)
{$fso.GetFolder( $_.FullName).Size}
else
{$_.Length}
}
}
}
如果你想完全避免使用COM,你可以像这样使用PowerShell来计算目录大小:
function DirWithSize($path=$pwd)
{
Get-ChildItem $path |
Foreach {if (!$_.PSIsContainer) {$_} `
else {
$size=0; `
Get-ChildItem $_ -r | Foreach {$size += $_.Length}; `
Add-Member NoteProperty Length $size -Inp $_ -PassThru `
}} |
Format-Table Mode, LastWriteTime, Name, Length -Auto
}