Benutzereingabe innerhalb If-Else Statement
Ich möchte in einer Batchdatei zunächst abfragen ob eine exe-Datei gestartet werden soll:
Wenn ja, muss ich die Exe-Datei mit Commandline Parameter für den zu kopierenden Ordner aufrufen.
Dazu wollte ich in der Zeile "OrdnerAbfrage D oder B" eigentlich ein set /p =Ordnername angeben (d oder b):
ausführen. Aber da crasht die Batch!
Kann mir jemand einen Tipp geben wie ich das hinbekomme?
set /p value=Sollen die Dateien zuerst erneuert werden (J oder N):
if /i "%value%" == "J" (
OrdnerAbfrage D oder B
) else (
andere Aktion
)
Wenn ja, muss ich die Exe-Datei mit Commandline Parameter für den zu kopierenden Ordner aufrufen.
Dazu wollte ich in der Zeile "OrdnerAbfrage D oder B" eigentlich ein set /p =Ordnername angeben (d oder b):
ausführen. Aber da crasht die Batch!
Kann mir jemand einen Tipp geben wie ich das hinbekomme?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 11240477835
Url: https://administrator.de/contentid/11240477835
Ausgedruckt am: 24.11.2024 um 22:11 Uhr
2 Kommentare
Neuester Kommentar
Fixed ChatGPT-Vorschlag.
@echo off
setlocal enabledelayedexpansion
:askForInput
set /p value=Sollen die Dateien zuerst erneuert werden (J oder N):
if /i "%value%" == "J" (
goto checkFolder
) else if /i "%value%" == "N" (
echo Andere Aktion ausführen, da die Dateien nicht erneuert werden sollen.
goto end
) else (
echo Ungültige Eingabe. Bitte geben Sie entweder "J" oder "N" ein.
goto askForInput
)
:checkFolder
set /p ordnername=Bitte geben Sie den Zielordner an (D oder B):
if /i "%ordnername%" == "D" (
start "" "DeinProgramm.exe" /ParameterFuerOrdnerD
) else if /i "%ordnername%" == "B" (
start "" "DeinProgramm.exe" /ParameterFuerOrdnerB
) else (
echo Ungültige Eingabe für den Ordnername.
goto checkFolder
)
:end
Moin,
Diskussionsrichtlinien - die Regeln zu unseren Inhalten
oder alles hinter dem Gleichzeichen in Doublequotes setzen, um es als Text zu deklarieren
BTW: Ich würde hier choice anstelle von "set /p" verwenden. Das hat den Vorteil, dass der Nutzer wirklich nur die vorgegebenen Tasten und nicht alles mögliche eintippen kann...
Gruß Thomas
Diskussionsrichtlinien - die Regeln zu unseren Inhalten
Dazu wollte ich in der Zeile "OrdnerAbfrage D oder B" eigentlich ein set /p =Ordnername angeben (d oder b):
ausführen. Aber da crasht die Batch!
Kann mir jemand einen Tipp geben wie ich das hinbekomme?
Entweder die Klammen mit Zirkumflex escapen...ausführen. Aber da crasht die Batch!
Kann mir jemand einen Tipp geben wie ich das hinbekomme?
if /i "%value%" == "J" (
set /p =Ordnername angeben ^(d oder b^):
)
if /i "%value%" == "J" (
set /p ="Ordnername angeben (d oder b):"
)
BTW: Ich würde hier choice anstelle von "set /p" verwenden. Das hat den Vorteil, dass der Nutzer wirklich nur die vorgegebenen Tasten und nicht alles mögliche eintippen kann...
@echo off
setlocal EnableDelayedExpansion
choice /c JN /m "Sollen die Dateien zuerst erneuert werden"
if %ErrorLevel% equ 1 (
choice /c BD /m "Ordnername angeben"
if !ErrorLevel! equ 1 (
REM: Aktion bei B
)
if !ErrorLevel! equ 2 (
REM: Aktion bei D
)
)
Gruß Thomas