번호가 매겨진 선택 목록에서 애플리케이션을 시작하세요.

번호가 매겨진 선택 목록에서 애플리케이션을 시작하세요.

번호가 매겨진 목록의 폴더 내에서 모든 애플리케이션을 동적으로 표시하고 애플리케이션과 관련된 번호를 입력하여 실행하고 싶습니다.

지금까지 나는 쉬운 부분인 숫자 표시를 사용했습니다. 그러나 숫자 입력을 특정 응용 프로그램을 시작하는 방법과 연결하는 방법에 대해서는 난감합니다.

@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

출력은 다음과 같습니다.

NirSoft Tools

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

Enter Choice:

중요한 부분, 즉 선택한 앱을 해당 번호로 시작하는 방법이 누락되었습니다. Windows 명령줄에서도 가능합니까?

답변1

다음은 최소한의 추가 사항(3줄)을 생각해 냈으며 이를 동적으로 유지합니다(디렉토리 내용/옵션 수가 변경되는 경우).

@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

이러한 추가 사항으로 인해 여기서 무슨 일이 일어나고 있습니까?

이 행은 각 옵션( , 등) set opt!num!=%%~ne에 대한 새 변수를 생성하며 각 옵션에는 이와 연결된 파일 이름이 포함됩니다.opt1opt2

set newchoice=opt%choice%줄은 변수를 참조하는 "newchoice"라는 새 변수를 생성합니다. opt#여기서 는 #이전 줄에서 선택한 숫자입니다. 따라서 을 선택하면 5변수 newchoice에 가 포함됩니다 opt5.

start !%newchoice%!줄은 해당 변수에 있는 파일 이름이 무엇이든 실행됩니다 opt#.

답변2

두 가지 방법이 있습니다. 현재 가지고 있는 것을 계속 사용하고 다음을 추가하십시오.

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

또는 을 set /p다음으로 바꾸는 것이 더 좋습니다.

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

etc...

세트보다 선택의 장점은 키를 누른 다음 진행된다는 것입니다. 입력할 필요가 없습니다. 또한 잘못된 입력에 대해서는 계속 진행되지 않습니다. 오류 수준 선택 사항을 9에서 1까지 나열해야 합니다.

관련 정보