我正在尝试在批处理文件中获取可用磁盘空间的整数。这是我的代码(非常简单)。

@echo off
wmic logicaldisk get freespace >> freespace.log
exit


但是输出在freespace.log文件中。

FreeSpace
9772687360
57401442304
7346626560
0
0


我只需要选择整数和求和。这样求和后的输出。

74520756224


我尽力在Google上进行搜索,但找不到解决方案。请帮我:)

最佳答案

这是使用混合批处理和Powershell的精确解决方案。确实应该使用纯Powershell,vbscript或jscript完成。

标记和IF语句的非直观用法是为了补偿FOR / F与WMIC的unicode输出之间的怪异交互。

@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%

10-08 19:42