1

如何将结果从字节转换为千兆字节?有关示例,请参见此脚本:

@echo off

set file=C:\Users\%username%\AppData\Local\Microsoft\Outlook\%username%.ost

%1 %0 :: %file%
set len=%~z2

echo %len%  %username% >>"C:\Desktop\size.txt"
4

2 回答 2

2

你可以使用这个方法:

set len=%~z2
set /A GB=%len:~0,-3%/1024/1024

这相当于这个公式:GigaBytes = Bytes / 1000 / 1024 / 1024。数值结果实际上与原始公式相同,但此方法允许正确转换超过 2000 GB 的文件大小。

如果要获得两位小数的结果,请使用以下方法:

set len=%~z2
set /A GBtimes100=%len:~0,-3%/1024*100/1024
echo %GBtimes100:~0,-2%.%GBtimes100:~-2%  %username% >>"C:\Desktop\size.txt"

安东尼奥

于 2013-02-15T05:04:00.943 回答
2

正如迈克尔在他的回答中所说,批处理可以通过SET /A. 但是计算严格限于整数;没有本机浮点数学。并且整数在内部表示为带符号的 32 位整数。所以最大可能的字节数等于~2 GB。已经编写了一些批处理例程来处理大量数字,但我不建议使用它们。

将字节转换为千兆字节的公式很简单:

Gigabytes = Bytes / 1024 / 1024 / 1024

在紧要关头,您可以编写混合脚本并让批处理调用 powershell 来计算。

for /f %%N in ('powershell %~z2/1024/1024/1024') do set len=%%N

但这是极其缓慢和低效的。您最好用支持浮点的脚本语言(可能是 PowerShell、VBScript 或 JScript)简单地编写整个脚本。

于 2013-02-14T20:05:41.077 回答