计算批处理文件中的已用磁盘空间

Are*_*ete 3 windows command-line 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
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

Information for volume C:
TOTAL SIZE  ---------- 240 GB
AVAILABLE SIZE ------- 135 GB
Run Code Online (Sandbox Code Playgroud)

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

Mag*_*goo 5

替换为:

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)
Run Code Online (Sandbox Code Playgroud)

有了这个:

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
Run Code Online (Sandbox Code Playgroud)

您的原件无缘无故分配a disktotaldiskavail- 的值是多余的,因为前一个已经分配了它们for

使用进行计算set /a,从总数中减去可用的数据(以GB为单位)。

  • 传统上,计算是1024字节= 1Kb;1024 * 1024 = 1Mb,1024 * 1024 * 1024 = 1Gb。这些有时被称为“千字节,兆字节,吉字节”。您的计算只需除以10 ^ 9并使用通用解释。因此,相差2 +%。市场营销人员通常使用通用术语,而不是行业术语或专业术语,因为它会导致数量增加,从而使ram / drive大小/无论什么都不知道。批处理数学限制为<2 ^ 31的整数,因此必须进行更复杂的安排以使术语用专业术语准确。 (2认同)