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