batch-file-es Windows

carlos.wilber.franco
from carlos.wilber.franco More from this publisher
08.02.2022 Views

set /a "i+=1"call set path!i!=%%~!i!call echo %%path!i!%%)endlocalSalida:c:\MyFiles\test1.txtc:\MyFiles\test2.txtc:\MyFiles\test3.txtTenga en cuenta que la variable !i! primero se expande a su valor inicial, 1, luego la variableresultante,% 1, se expande a su valor real de c:\MyFiles\test1.txt . Esta es la doble expansión dela variable i . En la siguiente línea, i es nuevamente doble expandido, mediante el uso delcomando CALL ECHO junto con el prefijo variable %% , luego se imprime en la pantalla (es decir, semuestra en la pantalla).En cada paso sucesivo a través del bucle, el número inicial se incrementa en 1 (debido al códigoi+=1 ). Por lo tanto, aumenta a 2 en la 2ª pasada a través del bucle, y a 3 en la 3ª pasada. Por lotanto, la cuerda hizo eco a la pantalla altera con cada paso.Declarar múltiples variablesCuando se definen múltiples variables al comienzo del lote, se puede usar una forma de definicióncorta empleando una cadena de reemplazo .@echo offset "vars=_A=good,_B=,_E=bad,_F=,_G=ugly,_C=,_H=,_I=,_J=,_K=,_L=,_D=6set "%vars:,=" & set "%"for /f %%l in ('set _') do echo %%lexit /b_A=good_D=6_E=bad_G=uglyObserve en el ejemplo anterior, las variables se ordenan alfabéticamente de forma nativa, cuandose imprimen en la pantalla.Usando una variable como una matrizEs posible crear un conjunto de variables que pueden actuar de forma similar a una matriz(aunque no son un objeto de matriz real) utilizando espacios en la instrucción SET :@echo offSET var=A "foo bar" 123for %%a in (%var%) do (echo %%a)https://riptutorial.com/es/home 85

echo Get the variable directly: %var%Resultado:A"foo bar"123Get the variable directly: A "foo bar" 123También es posible declarar su variable utilizando índices para que pueda recuperar informaciónespecífica. Esto creará múltiples variables, con la ilusión de una matriz:@echo offsetlocal enabledelayedexpansionSET var[0]=ASET var[1]=foo barSET var[2]=123for %%a in (0,1,2) do (echo !var[%%a]!)echo Get one of the variables directly: %var[1]%Resultado:Afoo bar123Get one of the variables directly: foo barTenga en cuenta que en el ejemplo anterior, no puede hacer referencia a var sin indicar cuál es elíndice deseado, porque var no existe en sí mismo. Este ejemplo también utiliza la setlocalenabledelayedexpansion junto con los puntos de exclamación en !var[%%a]! . Puede ver másinformación sobre esto en la Documentación de alcance de sustitución variable .Operaciones sobre variablesset var=10set /a var=%var%+10echo %var%El valor final de var es 20.La segunda línea no funciona dentro de un bloque de comando utilizado, por ejemplo, en unacondición IF o en un bucle FOR, ya que se necesitaría una expansión retardada en lugar de unaexpansión de variable de entorno estándar.Aquí hay otra, mejor manera de trabajar también en un bloque de comando:set var=10set /A var+=10echo %var%https://riptutorial.com/es/home 86

set /a "i+=1"

call set path!i!=%%~!i!

call echo %%path!i!%%

)

endlocal

Salida:

c:\MyFiles\test1.txt

c:\MyFiles\test2.txt

c:\MyFiles\test3.txt

Tenga en cuenta que la variable !i! primero se expande a su valor inicial, 1, luego la variable

resultante,% 1, se expande a su valor real de c:\MyFiles\test1.txt . Esta es la doble expansión de

la variable i . En la siguiente línea, i es nuevamente doble expandido, mediante el uso del

comando CALL ECHO junto con el prefijo variable %% , luego se imprime en la pantalla (es decir, se

muestra en la pantalla).

En cada paso sucesivo a través del bucle, el número inicial se incrementa en 1 (debido al código

i+=1 ). Por lo tanto, aumenta a 2 en la 2ª pasada a través del bucle, y a 3 en la 3ª pasada. Por lo

tanto, la cuerda hizo eco a la pantalla altera con cada paso.

Declarar múltiples variables

Cuando se definen múltiples variables al comienzo del lote, se puede usar una forma de definición

corta empleando una cadena de reemplazo .

@echo off

set "vars=_A=good,_B=,_E=bad,_F=,_G=ugly,_C=,_H=,_I=,_J=,_K=,_L=,_D=6

set "%vars:,=" & set "%"

for /f %%l in ('set _') do echo %%l

exit /b

_A=good

_D=6

_E=bad

_G=ugly

Observe en el ejemplo anterior, las variables se ordenan alfabéticamente de forma nativa, cuando

se imprimen en la pantalla.

Usando una variable como una matriz

Es posible crear un conjunto de variables que pueden actuar de forma similar a una matriz

(aunque no son un objeto de matriz real) utilizando espacios en la instrucción SET :

@echo off

SET var=A "foo bar" 123

for %%a in (%var%) do (

echo %%a

)

https://riptutorial.com/es/home 85

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!