batch-file-es Windows

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

Capítulo 4: Archivo de lote argumentos delínea de comandoExamplesArgumentos de línea de comando suministrados a archivos por lotesLos argumentos de línea de comando del archivo de lote son valores de parámetros enviados aliniciar el lote. Deben incluirse entre comillas si contienen espacios. En un archivo por lotes enejecución, los argumentos se utilizan para varios propósitos, es decir, la redirección a :labels ,variables de configuración o comandos en ejecución.Los argumentos se mencionan en el archivo por lotes usando %1, %2, ..., %9 .@echo offsetlocal EnableDelayedExpansionif not "%1"=="" (set "dir=%~1" & set "file=%~2"type !dir!\!file! | find /n /i "True" >nul^&& echo Success! || echo Failure)exit /bC:\Users\UserName> test.bat "C:\Temp\Test Results" "Latest.log"Success!Notas:• En el ejemplo anterior, las comillas dobles se eliminan utilizando el modificador deargumento %~1 .• Las cadenas largas se dividen en varias líneas usando ^ , y hay un espacio antes delcarácter en la siguiente línea.Archivos por lotes con más de 9 argumentosCuando se suministran más de 9 argumentos, se puede usar el comando shift [/n] , donde /nsignifica comenzar en el enésimo argumento, n está entre cero y ocho.Bucle a través de argumentos::argsset /a "i+=1"set arg!i!=%~1call echo arg!i! = %%arg!i!%%shiftgoto :argsTenga en cuenta que, en el ejemplo anterior, la variable de expansión retardada i se utiliza parahttps://riptutorial.com/es/home 11

asignar valores de argumento a la matriz de variables. El comando de call permite mostrar dichosvalores variables dentro del bucle.Contando argumentos:for %%i in (%*) do (set /a ArgCount+=1)echo %ArgCount%Establecer una variable en el argumento n:set i=5call set "path%i%=%%~i"Cambiando argumentos dentro de paréntesisVamos a tener el siguiente example.bat y lo llamamos con los argumentos 1 , 2 y 3 :@echo off()shiftshiftecho %1Como la expansión de la variable cambiará después de que se alcance el contexto de loscorchetes finales, la salida será:1Como esto podría ser un problema al desplazar entre paréntesis para acceder al argumento,deberá usar la llamada:@echo off()shiftshiftcall echo %%1Ahora la salida será 3 . A medida que se usa el comando CALL (que dará lugar a una expansión devariable adicional) con esta técnica, los argumentos de acceso también se pueden parametrizar:@echo offset argument=1shiftshiftcall echo %%%argument%https://riptutorial.com/es/home 12

Capítulo 4: Archivo de lote argumentos de

línea de comando

Examples

Argumentos de línea de comando suministrados a archivos por lotes

Los argumentos de línea de comando del archivo de lote son valores de parámetros enviados al

iniciar el lote. Deben incluirse entre comillas si contienen espacios. En un archivo por lotes en

ejecución, los argumentos se utilizan para varios propósitos, es decir, la redirección a :labels ,

variables de configuración o comandos en ejecución.

Los argumentos se mencionan en el archivo por lotes usando %1, %2, ..., %9 .

@echo off

setlocal EnableDelayedExpansion

if not "%1"=="" (

set "dir=%~1" & set "file=%~2"

type !dir!\!file! | find /n /i "True" >nul^

&& echo Success! || echo Failure

)

exit /b

C:\Users\UserName> test.bat "C:\Temp\Test Results" "Latest.log"

Success!

Notas:

• En el ejemplo anterior, las comillas dobles se eliminan utilizando el modificador de

argumento %~1 .

• Las cadenas largas se dividen en varias líneas usando ^ , y hay un espacio antes del

carácter en la siguiente línea.

Archivos por lotes con más de 9 argumentos

Cuando se suministran más de 9 argumentos, se puede usar el comando shift [/n] , donde /n

significa comenzar en el enésimo argumento, n está entre cero y ocho.

Bucle a través de argumentos:

:args

set /a "i+=1"

set arg!i!=%~1

call echo arg!i! = %%arg!i!%%

shift

goto :args

Tenga en cuenta que, en el ejemplo anterior, la variable de expansión retardada i se utiliza para

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

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

Saved successfully!

Ooh no, something went wrong!