¿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%