IF Befehl, wie funktioniert er?
Batch
Hi,
ich will mir eine Batch schreiben, in der man auf eine Frage mit einer von vier Zahlen antwortet und dann springt er zu dem Punkt.
...
ECHO Frage (0-3)
SET /p var=
CLS
ECHO.
IF /i var==0 GOTO null
IF /i var==1 GOTO eins
IF /i var==2 GOTO zwei
IF /i var==3 GOTO drei
...
Aber ich bekomm das nicht hin. Ich hoffe ihr helft mir.
MfG
Hi,
ich will mir eine Batch schreiben, in der man auf eine Frage mit einer von vier Zahlen antwortet und dann springt er zu dem Punkt.
...
ECHO Frage (0-3)
SET /p var=
CLS
ECHO.
IF /i var==0 GOTO null
IF /i var==1 GOTO eins
IF /i var==2 GOTO zwei
IF /i var==3 GOTO drei
...
Aber ich bekomm das nicht hin. Ich hoffe ihr helft mir.
MfG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 46913
Url: https://administrator.de/contentid/46913
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
17 Kommentare
Neuester Kommentar
set choice=
set /P choice=Wahl:
if not ´%choice%´==´´ set choice=%choice:~0,1%
if ´%choice%´==´0´ goto null
if ´%choice%´==´1´ goto eins
if ´%choice%´==´2´ goto zwei
if ´%choice%´==´2´ goto drei
http://www.illuziown.org/code.txt
so solls aussehen
hoffe es hilft
mfg illu###e
Da kannst du auch was anderes wie diese Striche nehmen. " oder drum herum geht auch.
Das mit der Abfrage wenn was anderes eingegeben wurde geht so dann:
:Frage
ECHO Frage (0-3)
SET /p var=
CLS
ECHO.
IF /i [%var%]== GOTO null
IF /i [%var%]==[1] GOTO eins
IF /i [%var%]==[2] GOTO zwei
IF /i [%var%]==[3] GOTO drei
echo Bitte nur 0 bis 3 eingeben
goto :Frage
miniversum
Das mit der Abfrage wenn was anderes eingegeben wurde geht so dann:
:Frage
ECHO Frage (0-3)
SET /p var=
CLS
ECHO.
IF /i [%var%]== GOTO null
IF /i [%var%]==[1] GOTO eins
IF /i [%var%]==[2] GOTO zwei
IF /i [%var%]==[3] GOTO drei
echo Bitte nur 0 bis 3 eingeben
goto :Frage
miniversum
@echo off
:frage
set var=
set /P var=Wahl:
if not [%var%]==; set var=%var:~0,1%
if [%var%]== goto null
if [%var%]==[1] goto eins
if [%var%]==[2] goto zwei
if [%var%]==[3] goto drei
echo Bitte nur 0 - 3 eingeben
goto frage
:null
echo Du bist bei Null
goto end
:eins
echo Du bist bei eins
goto end
:zwei
echo du bist bei zwei
goto end
:drei
echo du bist bei drei
goto end
:end
echo.
pause
1. nochmal übersichtlicher ohne diese "´" du kannst es genauso mit "[ , ]" oder "( , ) " machen.
2.
if not [%var%]==; set var=%var:~0,1%
3.
Ich möchte auch gern wissen wie das mach das,
wenn man nicht 0-3 eingegeben hat,
das man das wiederholen kann und er ein Error ausgibt.
Hoffe hat geholfen
mfg illu###e
Hallo Smiley,
Die Variable %IP% - wenn ich mich nicht täusche - ist auch falsch.
Schau dir mal folgendes Beispiel an, hoffe es wird deutlich.
mfg illu###e
Die Variable %IP% - wenn ich mich nicht täusche - ist auch falsch.
@echo off
TITLE Nachricht
echo.
echo Bitte letzten IP Block eingeben:
set /P block4=
echo.
echo.
echo Die komplette IP lautet:
set IP=192.168.0.%block4%
echo %IP%
echo.
pause>NUL
Schau dir mal folgendes Beispiel an, hoffe es wird deutlich.
mfg illu###e
Hallo Smiley,
Ich widerspreche zwar sehr ungern aber es ist anders. Habe es extra nochmal ausprobiert.
Noch ein anderes Beispiel, welches in den obrigen Kommentaren irgendwo schonmal steht.
Wenn es so wäre wie du es sagst, dann wäre %var%, wenn man Null eingeben würde: "Wahl:0". Aber dies ist nicht der Fall. %var% ist nämlich "0" und nicht "Wahl:0".
Probier es einfach mal aus.
RICHTIG:
FALSCH:
Du wirst sehen die Ausgaben unterscheiden sich.
mfg illu###e
Ich widerspreche zwar sehr ungern aber es ist anders. Habe es extra nochmal ausprobiert.
Noch ein anderes Beispiel, welches in den obrigen Kommentaren irgendwo schonmal steht.
@echo off
:frage
set var=
set /P var=Wahl:
if not [%var%]==; set var=%var:~0,1%
if [%var%]== goto null
Wenn es so wäre wie du es sagst, dann wäre %var%, wenn man Null eingeben würde: "Wahl:0". Aber dies ist nicht der Fall. %var% ist nämlich "0" und nicht "Wahl:0".
Probier es einfach mal aus.
RICHTIG:
@echo off
TITLE Nachricht
echo.
echo Bitte letzten IP Block eingeben:
set /P block4=
echo.
echo.
echo Die komplette IP lautet:
set IP=192.168.0.%block4%
echo %IP%
echo.
pause>NUL
FALSCH:
@echo off
TITLE Nachricht
echo.
echo Bitte letzten IP Block eingeben:
SET /p ip=192.168.0.
echo %IP%
echo.
pause>NUL
Du wirst sehen die Ausgaben unterscheiden sich.
mfg illu###e
Hallo Smiley,
Habe mir nochmal Zeit für diese Batch genommen. Hier ist der komplette Code.
Viel Spaß damit, ich hoffe es klappt alles.
Doch bevor ich Tschüss sage möchte ich mal wissen für was du diese Endlos-Schleife benötigst. Oder generell was bringt es jemanden drei mal die selbe Mittteilung zu senden?
Naja ist ja auch nicht meine Angelegenheit, meine Aufgabe habe ich erfüllt und ich hoffe ich habe geholfen.
mfg illu###e
Habe mir nochmal Zeit für diese Batch genommen. Hier ist der komplette Code.
@echo off
:start
cls
echo.
echo Bitte den 4. IP-Block eingeben.
set /P IP4=192.168.1.
set IP=192.168.1.%IP4%
cls
echo.
echo Bitte Nachricht eingeben
set /P MSG=
cls
echo Wieviel Mal soll die Nachricht versendet werden?
set choice=
set /P choice=Auswahl:
if not [%choice%]== set choice=%choice:~0,1%
if [%choice%] ==[1] goto einmal
if [%choice%]==[2] goto zweimal
if [%choice%]==[3] goto dreimal
if [%choice%]== goto endlos
:endlos
net send %IP% %MSG%
goto endlos
:einmal
net send %IP% %MSG%
goto frage
:zweimal
net send %IP% %MSG%
net send %IP% %MSG%
goto frage
:dreimal
net send %IP% %MSG%
net send %IP% %MSG%
net send %IP% %MSG%
goto frage
:frage
cls
echo Noch eine Nachricht?
echo.
echo 1 = Ja
echo 0 = Nein
echo.
set choice2=
set /P choice2=Auswahl:
if not [%choice2%]== set choice2=%choice2:~0,1%
if [%choice2%] ==[1] goto start
if [%choice2%] == goto nein
echo %choice2% ist keine gueltige Eingabe.
goto frage
:nein
Viel Spaß damit, ich hoffe es klappt alles.
Doch bevor ich Tschüss sage möchte ich mal wissen für was du diese Endlos-Schleife benötigst. Oder generell was bringt es jemanden drei mal die selbe Mittteilung zu senden?
Naja ist ja auch nicht meine Angelegenheit, meine Aufgabe habe ich erfüllt und ich hoffe ich habe geholfen.
mfg illu###e