script run how example create commands batch bat windows batch-file

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