Я бы предложил эту альтернативу, которая дополнительно предоставит результат в ГБ:
@For /F "Delims=" %%G In ('Powershell -NoP^
"gWMI Win32_LogicalDisk -F \""DeviceID='C:'\""|"^
"%%{[Math]::Round($_.FreeSpace/1GB,2)}"'
)Do @Set "FDS=%%G"
@Echo Freespace on C: is %FDS%GB
@Timeout -1
или проще:
@For /F "Delims=" %%G In ('Powershell -NoP^
"[Math]::Round($(gWMI Win32_LogicalDisk -F \""DeviceID='C:'\"").FreeSpace/1GB,2)"
')Do @Set "FDS=%%G"
@Echo Freespace on C: is %FDS%GB
@Timeout -1
На основании вашего комментария Если вы хотите, чтобы это было в байтах, вы можете использовать:
@For /F "Delims=" %%G In ('Powershell -NoP^
"gWMI Win32_LogicalDisk -F \""DeviceID='C:'\""|Select -Exp FreeSpace"
')Do @Set "FDS=%%G"
@Echo Freespace on C: is %FDS%bytes
@Timeout -1
или более простое:
@For /F "Delims=" %%G In ('Powershell -NoP^
"(gWMI Win32_LogicalDisk -F \""DeviceID='C:'\"").FreeSpace"
')Do @Set "FDS=%%G"
@Echo Freespace on C: is %FDS%bytes
@Timeout -1