È possibile impostare un'istruzione di un file batch su una variabile, per esempio:
findstr testing > %VARIABLE%
echo %VARIABLE%
FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO (
SET var=%%F
)
ECHO %var%
Io uso sempre l'USEBACKQ in modo che se avete una stringa da inserire o un nome di file lungo, potete usare i doppi apici senza rovinare il comando.
Ora, se il vostro output conterrà più linee, potete fare così
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
Ho trovato questo thread su quel coso dell'Interweb. Si riduce a:
@echo off
setlocal enableextensions
for /f "tokens=*" %%a in (
'VER'
) do (
set myvar=%%a
)
echo/%%myvar%%=%myvar%
pause
endlocal
Potete anche reindirizzare l'output di un comando a un file temporaneo, e poi mettere il contenuto di quel file temporaneo nella vostra variabile, tipo "likeuchashereby":
cmd > tmpFile
set /p myvar= < tmpFile
del tmpFile
Credito al thread su Tom's Hardware.
L'ho provato così e ha funzionato:
SET /P Var= | Cmd
Inserendo il comando in una variabile, il prompt inserirà il risultato del comando "Cmd
" nella variabile "Var
".
Aggiornamento:
Non funziona, colpa mia, lo script che ho fatto era questo:
SET /P Var= | dir /b *.txt
echo %Var%
In realtà mostrava diciamo "test.txt
", ma in realtà mostrava il risultato del comando "dir /b *.txt
", non il echo %var%
. Mi sono confuso perché entrambi gli output erano gli stessi.