Cómo configurar comandos de salida como una variable en un archivo por lotes

¿Es posible establecer una salida de statement de un archivo por lotes a una variable, por ejemplo:

findstr testing > %VARIABLE% echo %VARIABLE% 

 FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO ( SET var=%%F ) ECHO %var% 

Siempre utilizo USEBACKQ para que si tiene una cadena para insertar o un nombre de archivo largo, puede usar sus comillas dobles sin atornillar el comando.

Ahora si su salida contendrá múltiples líneas, puede hacer esto

 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 

Encontré este hilo en esa cosa de Interweb. Se reduce a:

 @echo off setlocal enableextensions for /f "tokens=*" %%a in ( 'VER' ) do ( set myvar=%%a ) echo/%%myvar%%=%myvar% pause endlocal 

También puede redirigir la salida de un comando a un archivo temporal, y luego colocar el contenido de ese archivo temporal en su variable, según se indique aquí:

 cmd > tmpFile set /p myvar= < tmpFile del tmpFile 

Crédito al hilo en Tom's Hardware.

en una sola línea:

 FOR /F "tokens=*" %g IN ('*your command*') do (SET VAR=%g) 

la salida del comando se configurará en% g y luego en VAR.

Más información: https://ss64.com/nt/for_cmd.html

Para leer un archivo …

 set /P Variable= 

Para escribir un archivo

 @echo %DataToWrite%>File.txt 

Nota; tener espacios antes del carácter <> hace que se agregue un espacio al final de la variable, también

Para agregar a un archivo, como un progtwig de registro, primero cree un archivo con una sola tecla Intro que se llama e.txt

 set /P Data=log0.txt 

su registro se verá así

 Entry1 Entry2 

y así

De todos modos un par de cosas útiles

 cd %windir%\system32\inetsrv @echo off for /F "tokens=* USEBACKQ" %%x in ( `appcmd list apppool /text:name` ) do ( echo|set /p= "%%x - " /text:name & appcmd.exe list apppool "%%x" /text:processModel.identityType ) echo %date% & echo %time% pause 

Lo he probado así y funcionó:

 SET /P Var= | Cmd 

Al conectar el comando a una variable, el mensaje insertará el resultado del comando ” Cmd ” en la variable ” Var “.

Actualizar:

No funciona, mi mal, el guión que hice fue esto:

 SET /P Var= | dir /b *.txt echo %Var% 

De hecho, estaba mostrando digamos ” test.txt “, pero de hecho mostraba el resultado del comando ” dir /b *.txt “, no el echo %var% . Me confundí porque ambas salidas eran iguales.

Espero que esto ayude

 set a=%username% echo %a% set a="hello" echo %a%