Aqui está algo que eu criei com adições mínimas (3 linhas) e o mantém dinâmico (para quando o conteúdo do diretório / número de opções mudar):
@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
O que está acontecendo aqui com essas adições?
A linha set opt!num!=%%~ne
cria uma nova variável para cada opção ( opt1
, opt2
, etc.) e cada uma delas contém o nome do arquivo associado a ela.
A linha set newchoice=opt%choice%
cria uma nova variável denominada "newchoice" que faz referência à variável opt#
, em que #
é o número escolhido por você na linha anterior. Portanto, se você escolher 5
, a variável newchoice
conterá opt5
.
A linha start !%newchoice%!
executará o nome do arquivo que estiver na variável opt#
.