Windows批处理将字节转换为GB

时间:2013-02-14 17:07:54

标签: batch-file size

如何将结果从字节转换为千兆字节?请参阅此脚本以获取示例:

@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"

2 个答案:

答案 0 :(得分:2)

迈克尔在答案中说,批处理可以通过SET /A进行数学计算。但计算严格限于整数;没有原生浮点数学。整数在内部表示为带符号的32位整数。因此,以字节为单位的最大可能数量相当于~2千兆字节。已经编写了批处理例程来处理大数字,但我不建议使用它们。

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

Gigabytes = Bytes / 1024 / 1024 / 1024

在紧要关头,您可以进行混合脚本编写,并让批量调用powershell进行数学运算。

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

但这非常缓慢且效率低下。简单地用支持浮点的脚本语言编写整个脚本会更好 - 可能是PowerShell,VBScript或JScript。

答案 1 :(得分: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"

安东尼奥