我正在使用以下代码输出 C: 驱动器上的当前可用空间。如何使用批处理将输出从字节转换为 GB?

@echo off
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get       FreeSpace /format:value`) do set FreeSpace=%%x
echo %FreeSpace%

最佳答案

批处理不支持浮点运算。这将是一个不错的解决方法:

@setlocal enableextensions enabledelayedexpansion
@echo off

for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get       FreeSpace /format:value`) do set FreeSpace=%%x

echo !FreeSpace:~0,-10!,!FreeSpace:~2,-8!GB

仅当您以管理员身份运行 .bat 时才有效。它只是在右边的 9. 数字后插入一个点,并修剪最后 7 位。这与 windows 中的值不完全匹配,因为 1k 在这里是 1000 而不是 1024

更好但更复杂的解决方案是使用 VBScript,如下文所述:Article

关于batch-file - 如何将此原始字节输出转换为 GB?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14690230/

10-10 13:26