run - windows batch file virus
Cómo configurar comandos de salida como una variable en un archivo por lotes (7)
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.
¿Es posible establecer una salida de declaración de un archivo por lotes a una variable, por ejemplo:
findstr testing > %VARIABLE%
echo %VARIABLE%
Espero que esto ayude
set a=%username%
echo %a%
set a="hello"
echo %a%
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.
Para leer un archivo ...
set /P Variable=<File.txt
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 programa de registro, primero cree un archivo con una sola tecla Intro que se llama e.txt
set /P Data=<log0.log
set /P Ekey=<e.txt
@echo %Data%%Ekey%%NewData%>log0.txt
su registro se verá así
Entry1
Entry2
y así
De todos modos un par de cosas útiles
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
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
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