如何编写批处理代码将每行输出存入独立变量
Windows批处理:将WMIC内存容量输出逐行存入独立变量
问题场景
使用wmic memorychip get capacity命令可获取系统各内存条的容量,输出格式如下:
wmic memorychip get capacity
输出结果:
Capacity 4294967296 4294967296 8589934592 4294967296
现有代码仅能提取第一行有效数据,无法将后续行存入独立变量:
for /f "tokens=2 delims==" %%A in ('wmic memorychip get capacity /value ^| find /i "Name="') do set capacity=%%A echo %capacity%
输出结果:
4294967296
需要将每条内存容量分别存入capacity1、capacity2、capacity3、capacity4等独立变量,用于后续计算。
解决方案代码
@echo off setlocal enabledelayedexpansion set count=0 :: 跳过标题行,过滤空行,逐行读取内存容量 for /f "skip=1 tokens=*" %%A in ('wmic memorychip get capacity ^| findstr /r /v "^$"') do ( set /a count+=1 set "capacity!count!=%%A" ) :: 输出所有内存容量变量 echo 检测到%count%条内存: echo capacity1=!capacity1! echo capacity2=!capacity2! echo capacity3=!capacity3! echo capacity4=!capacity4! :: 后续计算示例:计算总内存容量 set total=0 for /l %%i in (1,1,%count%) do ( set /a total+=!capacity%%i! ) echo 总内存容量:!total! 字节 endlocal
代码说明
setlocal enabledelayedexpansion:启用延迟变量扩展,支持在循环中动态生成和访问变量skip=1:跳过WMIC输出的第一行标题行findstr /r /v "^$":过滤WMIC输出中的空行,避免无效赋值- 通过
count计数器动态生成变量名(capacity1、capacity2...),将每行容量值对应存入 - 最后附带了总内存求和的示例,可根据需求修改后续计算逻辑
内容的提问来源于stack exchange,提问作者Sina Sadeh
相关产品推荐
相关产品推荐

