我有一个PowerShell脚本的一部分,它获取指定目录的文件大小。
我能够将不同测量单位的值转换成变量,但我不知道如何显示合适的值。
$DirSize = "{0:N2}" -f (($DirArray | Measure-Object -property length -sum).sum)
$DirSizeKB = "{0:N2}" -f (($DirArray | Measure-Object -property length -sum).sum / 1KB)
$DirSizeMB = "{0:N2}" -f (($DirArray | Measure-Object -property length -sum).sum / 1MB)
$DirSizeGB = "{0:N2}" -f (($DirArray | Measure-Object -property length -sum).sum / 1GB)如果字节数至少为1KB,则需要显示KB值。如果KBs的数量至少为1MB,我希望MBs显示等等。
有什么好办法来完成这个任务吗?
发布于 2014-07-07 18:14:39
使用开关或一组"if“语句。您的逻辑(伪代码)应该如下所示:
请注意,您应该按照从最大到最小的反向顺序进行测试。是的,我本可以为您编写代码,但我怀疑您知道的足够多,可以将上面的代码转换为一个工作脚本。这只是你陷入困境的方法。
发布于 2014-07-07 18:12:45
有很多方法可以做到这一点。这里有一个:
switch -Regex ([math]::truncate([math]::log($bytecount,1024))) {
'^0' {"$bytecount Bytes"}
'^1' {"{0:n2} KB" -f ($bytecount / 1KB)}
'^2' {"{0:n2} MB" -f ($bytecount / 1MB)}
'^3' {"{0:n2} GB" -f ($bytecount / 1GB)}
'^4' {"{0:n2} TB" -f ($bytecount / 1TB)}
Default {"{0:n2} PB" -f ($bytecount / 1pb)}
}发布于 2016-11-30 11:18:34
我的类似于@zdan的一个,但写成了一个脚本函数:
function DisplayInBytes($num)
{
$suffix = "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"
$index = 0
while ($num -gt 1kb)
{
$num = $num / 1kb
$index++
}
"{0:N1} {1}" -f $num, $suffix[$index]
}https://stackoverflow.com/questions/24616806
复制相似问题