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!=%%~ne
eine neue Variable und jede dieser Variablen enthält den zugehörigen Dateinamen.opt1
opt2
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 5
die Variable .newchoice
opt5
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 /p
durch 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.