Desejo exibir todos os aplicativos dinamicamente dentro de uma pasta em uma lista numerada e iniciá-los digitando o número associado ao aplicativo.
Até agora, tenho a parte mais fácil funcionando, a exibição numerada - mas não sei como associar a entrada numérica a uma maneira de iniciar o aplicativo específico.
@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
E a saída fica assim:
NirSoft Tools
1 BulkFileChanger
2 FileTypesMan
3 IconsExtract
4 nircmd
5 nircmdc
6 ShellBagsView
7 ShellExView
8 ShellMenuNew
9 ShellMenuView
Enter Choice:
Falta a parte crucial, a forma de iniciar o aplicativo selecionado pelo seu número. Isso é possível com a linha de comando do Windows?
Responder1
Aqui está algo que eu criei com acréscimos mínimos (3 linhas) e o mantém dinâmico (para quando o conteúdo do diretório/número de opções for alterado):
@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 set opt!num!=%%~ne
linha 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 set newchoice=opt%choice%
linha cria uma nova variável chamada "newchoice" que faz referência à opt#
variável, onde #
é o número que você escolheu na linha anterior. Então, se você escolher 5
, a newchoice
variável conterá opt5
.
A start !%newchoice%!
linha executará qualquer nome de arquivo nessa opt#
variável.
Responder2
Existem 2 maneiras. Continue com o que você tem agora e adicione o seguinte:
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 e melhor, substitua set /p
pelo seguinte:
choice /c 123456789 /m Enter Choice:
if errorlevel 2 goto FiletypesMan
if errorlevel 1 goto BulkFileChanger
etc...
A vantagem da escolha sobre o conjunto é que você pressiona a tecla e então prossegue. Não é necessário entrar. Além disso, não continuará com entradas falsas. Observe que você deve listar as opções de nível de erro de 9 a 1.