batch-file-es Windows
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
- Page 43 and 44: Capítulo 12: EcoIntroducciónecho
- Page 45 and 46: > echo off> echoECHO is off.> echo
- Page 47 and 48: (This will output:if %example%=="He
- Page 49 and 50: SoluciónDe acuerdo con un set /? d
- Page 51 and 52: Capítulo 14: Escapar de personajes
- Page 53 and 54: Findstr viene con un montón de per
- Page 55 and 56: Capítulo 15: Evitar las limitacion
- Page 57 and 58: Capítulo 16: FuncionesObservacione
- Page 59 and 60: call :stuff 123 var1rem More code..
- Page 61 and 62: Capítulo 17: Híbridos por lotes y
- Page 63 and 64: Capítulo 18: Híbridos por lotes y
- Page 65 and 66: Capítulo 19: Macros de archivos po
- Page 67 and 68: Capítulo 20: Mandatos por lotes ob
- Page 69 and 70: Capítulo 21: Manejo de archivos en
- Page 71 and 72: Aquí hay un ejemplo simple:copy fo
- Page 73 and 74: Capítulo 22: Mejores prácticasInt
- Page 75 and 76: Ejemplo BConsidere las siguientes a
- Page 77 and 78: Un ejemplo más avanzado muestra c
- Page 79 and 80: Capítulo 24: Privilegios elevados
- Page 81 and 82: :: check if we have administrative
- Page 83 and 84: Capítulo 25: Redirección de entra
- Page 85 and 86: clsecho Please input the file path,
- Page 87 and 88: ExamplesComparando números con la
- Page 89 and 90: Capítulo 27: Utilizando GotoIntrod
- Page 91 and 92: Capítulo 28: Variables en archivos
- Page 93: ya que (como se ve, al ver la ejecu
- Page 97 and 98: set /A Quotient=Divided / Divisorse
- Page 99 and 100: CreditosS.NoCapítulos Contributors
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