Inicie la aplicación desde una lista numerada de opciones

Inicie la aplicación desde una lista numerada de opciones

Quiero mostrar todas las aplicaciones dinámicamente dentro de una carpeta en una lista numerada e iniciarlas ingresando el número asociado con la aplicación.

Hasta ahora tengo la parte fácil funcionando, la pantalla numerada, pero no sé cómo asociar la entrada del número con una forma de iniciar la aplicación específica.

@echo off

echo NirSoft Tools
echo.

setlocal enabledelayedexpansion

set num=0

for %%e in (*.exe) do (
    set /a num += 1
    echo !num! %%~ne
)

echo.
set /p choice="Enter Choice: "

endlocal

echo.
pause

Y el resultado se ve así:

NirSoft Tools

1 BulkFileChanger
2 FileTypesMan
3 IconsExtract
4 nircmd
5 nircmdc
6 ShellBagsView
7 ShellExView
8 ShellMenuNew
9 ShellMenuView

Enter Choice:

Falta la parte crucial, la forma de iniciar la aplicación seleccionada por su número. ¿Es eso posible incluso con la línea de comandos de Windows?

Respuesta1

Aquí hay algo que se me ocurrió con adiciones mínimas (3 líneas) y lo mantiene dinámico (para cuando cambia el contenido del directorio/número de opciones):

@echo off

echo NirSoft Tools
echo.

setlocal enabledelayedexpansion

set num=0

for %%e in (*.exe) do (
    set /a num += 1
    set opt!num!=%%~ne
    echo !num! %%~ne
)

echo.
set /p choice="Enter Choice: "

set newchoice=opt%choice%
start !%newchoice%!

endlocal

echo.
pause

¿Qué está pasando aquí con estas adiciones?

La set opt!num!=%%~nelínea crea una nueva variable para cada opción ( opt1,, opt2etc.) y cada una de ellas contiene el nombre del archivo asociado a ella.

La set newchoice=opt%choice%línea crea una nueva variable llamada "nueva opción" que hace referencia a la opt#variable, donde #es el número que eligió como elección en la línea anterior. Entonces, si eliges 5, la newchoicevariable contendrá opt5.

La start !%newchoice%!línea ejecutará cualquier nombre de archivo que esté en esa opt#variable.

Respuesta2

Hay 2 maneras. Continúe con lo que tiene ahora y agregue lo siguiente:

if %choice%==1 goto BulkFileChanger
if %choice%==2 goto FiletypesMan
...
if %choice%==9 goto ShellMenuView

goto end

:BulkFileChanger
REM command here

:FiletypesMan
REM command here

etc...

:end

Alternativamente y mejor, reemplace el set /pcon lo siguiente:

choice /c 123456789 /m Enter Choice:
if errorlevel 2 goto FiletypesMan
if errorlevel 1 goto BulkFileChanger

etc...

La ventaja de elegir sobre configurar es que presionas la tecla y luego continúa. No es necesario ingresar. Además, no continuará con entradas falsas. Tenga en cuenta que debe enumerar las opciones de nivel de error del 9 al 1.

información relacionada