How to set commands output as a variable in a batch file

Dennis picture Dennis · Jun 15, 2011 · Viewed 518k times · Source

Is it possible to set a statement's output of a batch file to a variable, for example:

findstr testing > %VARIABLE%

echo %VARIABLE%

Answer

Mechaflash picture Mechaflash · Jun 15, 2011
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
SET var=%%F
)
ECHO %var%

I always use the USEBACKQ so that if you have a string to insert or a long file name, you can use your double quotes without screwing up the command.

Now if your output will contain multiple lines, you can do this

SETLOCAL ENABLEDELAYEDEXPANSION
SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
  SET var!count!=%%F
  SET /a count=!count!+1
)
ECHO %var1%
ECHO %var2%
ECHO %var3%
ENDLOCAL