Ja-Nein Abrage unter Windows XP,2000
Habe unter Windows 7 eine Batch-Datei geschrieben. In dieser kommt mehrmals der Befehl choice vor.
Soweit ich weiß gibt es diesen aber bei Windows XP und 2000 nicht.
Hi,
Ich habe eine Batch-Datei zur Verwendung von Xcopy geschrieben. Mit dieser kann ich z.B. den Inhalt einer CD/DVD auf einen USB-Stick oder Festplatte kopieren. Beim erstellen eines Bootbaren USB-Sticks ist das ganz praktisch da so auch versteckte Dateien kopiert werden. Ich habe dabei mehrfach den Befehl choice angewandt. Dieser funktionniert aber soweit ich weiß nicht unter Windows XP oder 2000.
Deshalb würde ich gerne wissen wie man so eine Ja/Nein-Abrage erstellen kann, dass sie auch unter XP/2000 läuft?
(Ich weiß, dass es viel einfacher wäre den Befehl "xcopy" einfach in die Eingabeaufforderung einzugeben, aber ich experimentiere eben gerne.)
Hier seht ihr den Anfang meiner Batch-datei: (Die kompletter wäre etwas zu lang. Aber wenn ihr mir sagt wie oder ob es überhaupt geht, kann ich sie gerne hier hochladen.)
Ich kann mir auch gut vorstellen, dass ich dabei vieles etwas zu umständlich gemacht habe
@echo off
:begin
color 0C
echo Programm zur Verwendung von Xcopy
echo.
echo.
echo Geben sie den Lauwerkbuchstaben des Zielverzeichnisses an.
CHOICE /C CDEFGHIJKLMN /M "C=C:\ D=D:\ ..."
IF %ERRORLEVEL% EQU 1 goto copytoC
IF %ERRORLEVEL% EQU 2 goto copytoD
IF %ERRORLEVEL% EQU 3 goto copytoE
IF %ERRORLEVEL% EQU 4 goto copytoF
IF %ERRORLEVEL% EQU 5 goto copytoG
IF %ERRORLEVEL% EQU 6 goto copytoH
IF %ERRORLEVEL% EQU 7 goto copytoI
IF %ERRORLEVEL% EQU 8 goto copytoJ
IF %ERRORLEVEL% EQU 9 goto copytoK
IF %ERRORLEVEL% EQU 10 goto copytoL
IF %ERRORLEVEL% EQU 11 goto copytoM
IF %ERRORLEVEL% EQU 12 goto copytoN
:copytoC
echo Geben Sie den Laufwerkbuchstaben des Quellverzeichnisses ein.
CHOICE /C CDEFGHIJKLMN /M "C=C:\ D=D:\ ..."
IF %ERRORLEVEL% EQU 1 goto CopyFromC
[ ... ]
IF %ERRORLEVEL% EQU 12 goto CopyFromN
:CopyFromC
echo.
echo Moechten sie das Kopieren starten?
echo C:\ nach C:\
echo.
echo Waehlen Sie N aus um Quell- und Zielverzeichnis neu zu definieren.
CHOICE /C JNA /M "J=Ja N=Nein A=Abrechen"
IF %ERRORLEVEL% EQU 1 goto startCC
IF %ERRORLEVEL% EQU 2 goto begin
IF %ERRORLEVEL% EQU 3 goto ende
... hier geht es eigentlich noch weiter
Würde mich über ein paar Tipps und verbesserungsvorschläge was die Batch betrifft sehr freuen.
Soweit ich weiß gibt es diesen aber bei Windows XP und 2000 nicht.
Hi,
Ich habe eine Batch-Datei zur Verwendung von Xcopy geschrieben. Mit dieser kann ich z.B. den Inhalt einer CD/DVD auf einen USB-Stick oder Festplatte kopieren. Beim erstellen eines Bootbaren USB-Sticks ist das ganz praktisch da so auch versteckte Dateien kopiert werden. Ich habe dabei mehrfach den Befehl choice angewandt. Dieser funktionniert aber soweit ich weiß nicht unter Windows XP oder 2000.
Deshalb würde ich gerne wissen wie man so eine Ja/Nein-Abrage erstellen kann, dass sie auch unter XP/2000 läuft?
(Ich weiß, dass es viel einfacher wäre den Befehl "xcopy" einfach in die Eingabeaufforderung einzugeben, aber ich experimentiere eben gerne.)
Hier seht ihr den Anfang meiner Batch-datei: (Die kompletter wäre etwas zu lang. Aber wenn ihr mir sagt wie oder ob es überhaupt geht, kann ich sie gerne hier hochladen.)
Ich kann mir auch gut vorstellen, dass ich dabei vieles etwas zu umständlich gemacht habe
@echo off
:begin
color 0C
echo Programm zur Verwendung von Xcopy
echo.
echo.
echo Geben sie den Lauwerkbuchstaben des Zielverzeichnisses an.
CHOICE /C CDEFGHIJKLMN /M "C=C:\ D=D:\ ..."
IF %ERRORLEVEL% EQU 1 goto copytoC
IF %ERRORLEVEL% EQU 2 goto copytoD
IF %ERRORLEVEL% EQU 3 goto copytoE
IF %ERRORLEVEL% EQU 4 goto copytoF
IF %ERRORLEVEL% EQU 5 goto copytoG
IF %ERRORLEVEL% EQU 6 goto copytoH
IF %ERRORLEVEL% EQU 7 goto copytoI
IF %ERRORLEVEL% EQU 8 goto copytoJ
IF %ERRORLEVEL% EQU 9 goto copytoK
IF %ERRORLEVEL% EQU 10 goto copytoL
IF %ERRORLEVEL% EQU 11 goto copytoM
IF %ERRORLEVEL% EQU 12 goto copytoN
:copytoC
echo Geben Sie den Laufwerkbuchstaben des Quellverzeichnisses ein.
CHOICE /C CDEFGHIJKLMN /M "C=C:\ D=D:\ ..."
IF %ERRORLEVEL% EQU 1 goto CopyFromC
[ ... ]
IF %ERRORLEVEL% EQU 12 goto CopyFromN
:CopyFromC
echo.
echo Moechten sie das Kopieren starten?
echo C:\ nach C:\
echo.
echo Waehlen Sie N aus um Quell- und Zielverzeichnis neu zu definieren.
CHOICE /C JNA /M "J=Ja N=Nein A=Abrechen"
IF %ERRORLEVEL% EQU 1 goto startCC
IF %ERRORLEVEL% EQU 2 goto begin
IF %ERRORLEVEL% EQU 3 goto ende
... hier geht es eigentlich noch weiter
Würde mich über ein paar Tipps und verbesserungsvorschläge was die Batch betrifft sehr freuen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 132809
Url: https://administrator.de/forum/ja-nein-abrage-unter-windows-xp-2000-132809.html
Ausgedruckt am: 05.04.2025 um 06:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo racer23!
Noch als Anmerkung: Mit
erübrigt sich die Unterscheidung Groß-/Kleinschreibung (und damit das zweite "
Grüße
bastla
Hat das "set JN=" bei :ENDE eigentlich noch irgendwas zu bedeuten
Es ersetzt das zumeist am Anfang eines Batches verwendet "setlocal
" und erreicht damit, dass die Variable %JN% nach Ende des Batches nicht mehr existiert (damit sie nicht ev in einem anderen Batch - bereits mit der letzten Auswahl vorbelegt - "auftaucht").oder könnte man da auch einfach exit schreiben?
Ein "exit
" ohne Zusatz ist an dieser Stelle sinnlos (bzw kontraproduktiv, da es auch noch das Testen direkt von der Kommandozeile - durch Schließen der CMD-Shell - erschwert).Noch als Anmerkung: Mit
if /i "%JN%"=="j" goto P1
if
" zum selben Thema).Grüße
bastla
Hallo racer23!
[Edit] Suboptimales Beispiel
- hier ginge es auch mit "
Grüße
bastla
könnte das vielleicht " :: " sein?
Richtig; alternativ dazu auch mit REM
- zB gelegentlich erforderlich in einem mehrzeiligen "if
", wie etwa:if /i "%JN%=="j" (
REM Machen wir's ...
echo Antwort ist Ja
goto ENDE
)
[Edit] Suboptimales Beispiel
::
" ... [/Edit]Grüße
bastla