I use this code to set first output line into variable but can't set second or other line into another variables.
wmic memorychip get capacity
Output:
Capacity
4294967296
4294967296
8589934592
4294967296
My code:
for /f "tokens=2 delims==" %%A in ('wmic memorychip get capacity /value ^| find /i "Name="') do set capacity=%%A
echo %capacity%
Output:
4294967296
But I need some code like:
do set capacity1=%%A & capacity2=%%B & capacity3=%%C & capacity4=%%D
echo %capacity1%
echo %capacity2%
echo %capacity3%
echo %capacity4%
I need to set each line into separate variables.
I need separate variables like %capacity1%
and %capacity2%
etc. I'll use each value to calculate using more code.
In order to generate a collection of variables (usually called an array, but batch technically doesn't have arrays (it's complicated)), you'll have to set up a variable to keep track of a counter and increment that every time a new line is read.
In order to update and use a variable inside of the same for
loop, you'll need to enable delayed expansion (see this for more information about that).
Also, because wmic
outputs in UTF-16 and each line ends in \r\r\n instead of \r\n, you'll need to run each line through a second for
loop.
@echo off
setlocal enabledelayedexpansion
set "capacity_counter=0"
for /f "tokens=2 delims==" %%A in ('wmic memorychip get capacity /value ^| find /I "Capacity="') do (
for /f %%B in ("%%~A") do (
set /a capacity_counter+=1
set "capacity[!capacity_counter!]=%%B"
)
)
for /L %%A in (1,1,!capacity_counter!) do echo Capacity %%A: !capacity[%%A]!