Batch does not support float point arithmetic. This would be a nice workaround:
@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
It only works if you run the .bat as administrator. It just inserts a dot after the 9. digits from the right, and trims the last 7. This is not exactly matching the value from windows, because 1k is here 1000 and not 1024
A better but more complex solution would be to use VBScript, described in the following article: Article
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…