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?
Please also mark the comments that contributed to the solution of the article
Content-ID: 11240477835
Url: https://administrator.de/forum/benutzereingabe-innerhalb-if-else-statement-11240477835.html
Printed on: January 13, 2025 at 19:01 o'clock
2 Comments
Latest comment
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,
Discussion guidelines - The rules for our content
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
Discussion guidelines - The rules for our content
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