Starten Sie die Anwendung aus einer nummerierten Auswahlliste

Starten Sie die Anwendung aus einer nummerierten Auswahlliste

Ich möchte alle Anwendungen innerhalb eines Ordners dynamisch in einer nummerierten Liste anzeigen und durch Eingabe der der Anwendung zugeordneten Nummer starten.

Bisher hat der einfache Teil, die Nummernanzeige, funktioniert, aber ich weiß nicht, wie ich die Zahleneingabe mit einer Möglichkeit zum Starten der jeweiligen Anwendung verknüpfen kann.

@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

Und die Ausgabe sieht folgendermaßen aus:

NirSoft Tools

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

Enter Choice:

Es fehlt der entscheidende Teil, nämlich die Möglichkeit, die ausgewählte App über ihre Nummer zu starten. Ist das mit der Windows-Kommandozeile überhaupt möglich?

Antwort1

Hier ist etwas, das ich mit minimalen Ergänzungen (3 Zeilen) entworfen habe und das dynamisch bleibt (für den Fall, dass sich Verzeichnisinhalte/Anzahl der Optionen ändern):

@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

Was ist hier mit diesen Ergänzungen los?

Die Zeile erstellt für jede Option ( , usw.) set opt!num!=%%~neeine neue Variable und jede dieser Variablen enthält den zugehörigen Dateinamen.opt1opt2

Die set newchoice=opt%choice%Zeile erstellt eine neue Variable namens „newchoice“, die auf die opt#Variable verweist, wobei #die Zahl ist, die Sie in der vorherigen Zeile als Ihre Wahl ausgewählt haben. Wenn Sie also auswählen , enthält 5die Variable .newchoiceopt5

Die start !%newchoice%!Zeile führt den Dateinamen aus, der in dieser opt#Variablen steht.

Antwort2

Es gibt zwei Möglichkeiten. Entweder Sie machen mit dem weiter, was Sie jetzt haben, und fügen Folgendes hinzu:

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

Alternativ und besser ersetzen Sie das set /pdurch Folgendes:

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

etc...

Der Vorteil von „choose“ gegenüber „set“ besteht darin, dass Sie die Taste drücken und dann weitermachen. Keine Eingabe erforderlich. Außerdem wird bei falschen Eingaben nicht weitergemacht. Beachten Sie, dass Sie die Fehlerstufenauswahl von 9 bis 1 auflisten müssen.

verwandte Informationen