计算batch file中使用的磁盘空间

我已经使用这个问题获取磁盘大小信息。 我很批量编程,所以请耐心等待。

@echo off & setlocal ENABLEDELAYEDEXPANSION SET "volume=C:" FOR /f "tokens=1*delims=:" %%i IN ('fsutil volume diskfree %volume%') DO ( SET "diskfree=!disktotal!" SET "disktotal=!diskavail!" SET "diskavail=%%j" ) FOR /f "tokens=1,2" %%i IN ("%disktotal% %diskavail%") DO SET "disktotal=%%i"& SET "diskavail=%%j" (ECHO(Information for volume %volume% ECHO(TOTAL SIZE ---------- %disktotal:~0,-9% GB ECHO(AVAILABLE SIZE ------- %diskavail:~0,-9% GB) pause 

结果是这样的:

 Information for volume C: TOTAL SIZE ---------- 240 GB AVAILABLE SIZE ------- 135 GB 

现在如何通过从总大小中减去可用大小来计算使用的磁盘空间? 我知道我必须使用SET命令和/A但是我不知道如何实现它。

替换这个:

 FOR /f "tokens=1,2" %%i IN ("%disktotal% %diskavail%") DO SET "disktotal=%%i"& SET "diskavail=%%j" (ECHO(Information for volume %volume% ECHO(TOTAL SIZE ---------- %disktotal:~0,-9% GB ECHO(AVAILABLE SIZE ------- %diskavail:~0,-9% GB) 

有了这个:

 SET /a diskused=%disktotal:~0,-9% - %diskavail:~0,-9% ECHO(Information for volume %volume% ECHO(TOTAL SIZE ---------- %disktotal:~0,-9% GB ECHO(AVAILABLE SIZE ------- %diskavail:~0,-9% GB ECHO(USED SIZE ------------ %diskused% GB 

你的原始没有明显的理由使分配disktotaldiskavail的价值 – 这是多余的,因为他们已经被分配的前一个。

使用set /a进行计算,从GB中减去总数中的可用值。