Hola, necesito una pequeña ayudita con un batch que no se como hacerlo...
la cosa es que tenemos que hacer un batch que cuente los parametros que le pases desde cmd , te muestre cuantos parametros has introducido y hacer que el usuario pueda elegir que parametro quiere ver. La primera parte y la segunda ya la hice y funcionan bien pero la ultima no se como hacerla. codigo:
@echo off
setlocal enabledelayed expansion
set cuenta=0
for %%i in (%*) do (
set /a cuenta=!cuenta!+1
)
Has introducido %cuenta% parametros
pause>nul
rem Y aqui la tercera parte donde el usuario puede elegir que parametro desea ver el 1 el 3 o el 58 no importa. No se puede usar for/f.
Gracias
Puedes hacerlo de la siguiente manera:
@Echo Off & SetLocal EnableDelayedExpansion
Set "values="
Set /A "index=0"
for %%# in (%*) Do (
Set /A "index+=1"
Set "values=!values!!index!"
Set "arg!index!=%%~#"
)
Echo:Se han recibido [%index%] argumentos.
Echo+
Choice /C "%values%" /M "Seleccione un argumento..."
Echo:Valor: "!arg%ErrorLevel%!" | More
Pause&Exit /B 0
Resultado de ejecución:
.\Script.cmd "q" w "e" r " t " y.
Se han recibido [6] argumentos.
Seleccione un argumento... [1,2,3,4,5,6]?1
Valor: "q"
Presione una tecla para continuar . . .
PD: No se si forma parte del ejercicio pero ten en cuenta que al habilitar la expansión de variables cualquier símbolos de exclamación ! será ignorado en los argumentos recibidos por linea de comandos; para solucionarlo deberías utilizar el comando Call en la asignación de variables (duplicando el símbolo de variable % según la recursividad actual, para que funcione).
Saludos
Cita de: Eleкtro en 28 Enero 2016, 11:58 AM
Puedes hacerlo de la siguiente manera:
@Echo Off & SetLocal EnableDelayedExpansion
Set "values="
Set /A "index=0"
for %%# in (%*) Do (
Set /A "index+=1"
Set "values=!values!!index!"
Set "arg!index!=%%~#"
)
Echo:Se han recibido [%index%] argumentos.
Echo+
Choice /C "%values%" /M "Seleccione un argumento..."
Echo:Valor: "!arg%ErrorLevel%!" | More
Pause&Exit /B 0
Resultado de ejecución:
.\Script.cmd "q" w "e" r " t " y.
Se han recibido [6] argumentos.
Seleccione un argumento... [1,2,3,4,5,6]?1
Valor: "q"
Presione una tecla para continuar . . .
PD: No se si forma parte del ejercicio pero ten en cuenta que al habilitar la expansión de variables cualquier símbolos de exclamación ! será ignorado en los argumentos recibidos por linea de comandos; para solucionarlo deberías utilizar el comando Call en la asignación de variables (duplicando el símbolo de variable % según la recursividad actual, para que funcione).
Saludos
@Elektro esta bien pero el problema es que no podemos usar ningun comando o argumento que no hayamos usado en clase como por ejemplo
Choice /C "%values%" /M "Seleccione un argumento..."
%%~# ni esto
| More ni esto tampoco, asi que... pues no se como hacerlo
pero me podrias explicar que hace esto?: %%~#
esto: Echo:Valor: "!arg%ErrorLevel%!" | More, gracias