How to get integer of free disk space in Batch file?

batch-file, cmd

Solution

Here is an exact solution using hybrid batch and powershell. It really should be done with pure powershell, vbscript, or jscript.

The non-intuitive use of tokens and the IF statement are to compensate for the weird interaction between FOR /F and the unicode output of WMIC.

@echo off
setlocal enableDelayedExpansion
set /a freeSpace=0
for /f "skip=1 tokens=1,2" %%A in ('wmic logicaldisk get freespace') do (
  if "%%B" neq "" for /f %%N in ('powershell !freeSpace!+%%A') do (
    set freeSpace=%%N
  )
)
echo freeSpace=%freeSpace%

Problem

I'm trying to get integer of free disk space in Batch file. This is a my (very) simple code. ``` @echo off wmic logicaldisk get freespace >> freespace.log exit ``` But output in freespace.log file. ``` FreeSpace 9772687360 57401442304 7346626560 0 0 ``` I need to pick integer only and summation. After summation output like this. ``` 74520756224 ``` I search on Google as my best but I can't find solutions. Please help me:)

Original source