Necesito crear un script por lotes de Windows donde necesito pasar algunos argumentos de línea de comandos. Estos argumentos pueden aparecer en cualquier orden, pero la secuencia de comandos debe recogerlos correctamente en función del nombre del argumento. P.ej:
<scriptname> -age <agevalue> -gender <gender>
<scriptname> -gender <gender> -age <agevalue>
La secuencia de comandos se puede invocar en cualquiera de las dos formas anteriores, pero la edad y el género se deben seleccionar y asignar correctamente a las variables. Los argumentos pueden ser identificados por el interruptor antes de ellos, es decir, -age, -gender, etc.
¿Puede alguien darme un ejemplo para identificar esto internamente?
windows
batch
command-line-arguments
Dhiwakar Ravikumar
fuente
fuente
if /I "%~1" == "--age" ...
(tenga en cuenta la tilde). Esto también funciona para parámetros vacíos o parámetros que se ponen entre comillas dobles.¿Puedes hacerlo con Powershell? o necesita ser por lotes? Powershell lo hace agradable y fácil, solo necesita agregar algo como esto en la parte superior de su script, y luego puede llamar a cada parámetro en cualquier orden
Puede hacerlo con lotes, pero requerirá una gran cantidad de verificación de parámetros. Aquí hay algunos enlaces de algunos scripts de lotes que lo hacen
http://www.ericphelps.com/batch/samples/arguments.bat.txt
(Posible duplicado de)
/programming/5215729/is-there-a-way-to-pass-parameters-by-name-and-not-by-order-to-a-batch-bat-f
fuente