Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

IF Befehl, wie funktioniert er?

Frage Entwicklung Batch & Shell

Mitglied: Smiley

Smiley (Level 1) - Jetzt verbinden

16.12.2006, aktualisiert 18.12.2006, 13687 Aufrufe, 17 Kommentare

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
Mitglied: illuzione
16.12.2006 um 21:46 Uhr
01.
set choice= 
02.
set /P choice=Wahl:  
03.
if not ´%choice%´==´´ set choice=%choice:~0,1% 
04.
if ´%choice%´==´0´ goto null 
05.
if ´%choice%´==´1´ goto eins 
06.
if ´%choice%´==´2´ goto zwei 
07.
if ´%choice%´==´2´ goto drei
mh der nimmt diese striche nicht

http://www.illuziown.org/code.txt
so solls aussehen

hoffe es hilft

mfg illu###e
Bitte warten ..
Mitglied: Dani
16.12.2006 um 22:15 Uhr
Abend,
probier's mal so:
01.
ECHO Frage (0-3) 
02.
SET /p var= 
03.
CLS 
04.
ECHO. 
05.
 
06.
IF %var%==0 GOTO null 
07.
IF %var%==1 GOTO eins 
08.
IF %var%==2 GOTO zwei 
09.
IF %var%==3 GOTO drei 
10.
....
Gruß
Dani
Bitte warten ..
Mitglied: Smiley
17.12.2006 um 12:41 Uhr
01.
set var= 
02.
set /P var=Wahl:  
03.
if not ´%var%´==´´ set var=%var:~0,1% 
04.
if ´%var%´==´0´ goto null 
05.
if ´%var%´==´1´ goto eins 
06.
if ´%var%´==´2´ goto zwei 
07.
if ´%var%´==´2´ goto drei
Wenn antwort nicht gleich ist mit ´´, setzte var=%var:~0.1%??
if not ´%var%´==´´ set var=%var:~0,1%

Ich kenn mich nicht so gut aus, was macht dieser Befehl? (vllt. wenn eingabe nicht 0-3 dann versuchs nochmal?) Und warum die ganzen striche? (´)
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.
@Dani: Ich weiß garnicht warum ich das ganze nicht mit % versucht habe. Danke.

MfG
Bitte warten ..
Mitglied: miniversum
17.12.2006 um 13:24 Uhr
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%]==[0] 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
Bitte warten ..
Mitglied: Smiley
17.12.2006 um 13:49 Uhr
Danke, ihr habt mir sehr geholfen.

MfG
Bitte warten ..
Mitglied: illuzione
17.12.2006 um 14:06 Uhr
01.
@echo off 
02.
:frage 
03.
set var= 
04.
set /P var=Wahl:  
05.
if not [%var%]==[]; set var=%var:~0,1% 
06.
if [%var%]==[0] goto null 
07.
if [%var%]==[1] goto eins 
08.
if [%var%]==[2] goto zwei 
09.
if [%var%]==[3] goto drei 
10.
echo Bitte nur 0 - 3 eingeben  
11.
goto frage 
12.
 
13.
:null  
14.
echo Du bist bei Null 
15.
goto end 
16.
:eins 
17.
echo Du bist bei eins 
18.
goto end 
19.
:zwei 
20.
echo du bist bei zwei 
21.
goto end 
22.
:drei 
23.
echo du bist bei drei 
24.
goto end 
25.
 
26.
:end 
27.
echo. 
28.
pause

1. nochmal übersichtlicher ohne diese "´" du kannst es genauso mit "[ , ]" oder "( , ) " machen.

2.
01.
 if not [%var%]==[]; set var=%var:~0,1% 
Wenn %var% nicht leer ist, dann macht er mit denn ifs unten drunter weiter, ansonsten überspringt er die ifs und macht das was drunter steht, in dem Fall: er geht wieder zur Frage zurück.

3.
01.
Ich möchte auch gern wissen wie das mach das,  
02.
wenn man nicht 0-3 eingegeben hat,  
03.
das man das wiederholen kann und er ein Error ausgibt.
So hätten wir auch das gelöst. Wenn du nichts eingibst beziehungsweise etwas falsches dann sagt er: "Bitte nur 0-3 eingeben" und fragt dich erneut.

Hoffe hat geholfen
mfg illu###e
Bitte warten ..
Mitglied: Smiley
17.12.2006 um 14:20 Uhr
Wenn es jemanden interessiert hier ist der Quellcode:

01.
@ECHO off 
02.
 
03.
TITLE Nachrichten verschicken. 
04.
 
05.
:ja 
06.
CLS 
07.
ECHO. 
08.
ECHO Bitte gib jetzt den letzten Block der IP ein (192.168.0.[xxx]). 
09.
SET /p ip=192.168.0. 
10.
CLS 
11.
ECHO. 
12.
ECHO Bitte gib jetzt die Nachricht ein. 
13.
SET /p msg= 
14.
CLS 
15.
:Frage1 
16.
ECHO. 
17.
ECHO Wie oft soll die nachricht geschickt werden (0-3)? Bei 0 wird sie solange geschickt bis das Programm beendet wird. 
18.
SET /p var= 
19.
CLS 
20.
 
21.
IF /i %var%==0 GOTO endless 
22.
IF /i %var%==1 GOTO eins 
23.
IF /i %var%==2 GOTO zwei 
24.
IF /i %var%==3 GOTO drei 
25.
ECHO. 
26.
ECHO Bitte nur 0 bis 3 eingeben. 
27.
GOTO :Frage1 
28.
 
29.
ECHO. 
30.
ECHO Die Nachricht wird verschickt ... 
31.
 
32.
:endless 
33.
net send %IP% %msg% 
34.
GOTO endless 
35.
:eins 
36.
net send %IP% %msg% 
37.
GOTO Frage2 
38.
:zwei 
39.
net send %IP% %msg% 
40.
net send %IP% %msg% 
41.
GOTO Frage2 
42.
:drei 
43.
net send %IP% %msg% 
44.
net send %IP% %msg% 
45.
net send %IP% %msg% 
46.
GOTO Frage2 
47.
 
48.
CLS 
49.
:Frage2 
50.
ECHO. 
51.
ECHO Noch eine nachricht verschicken? (0-1) 
52.
SET /P frage= 
53.
 
54.
IF /i %frage%==0 GOTO nein 
55.
IF /i %frage%==1 GOTO ja 
56.
ECHO. 
57.
ECHO Bitte nur 0 oder 1 eingeben. 
58.
GOTO :Frage2 
59.
 
60.
:nein 
61.
END
Ein Problem hab ich noch, wenn ich das soweit benutze kommt immer der Fehler: Das senden von Dateien wird nicht länger unterstüzt. (an 127.0.0.1)

MfG
Bitte warten ..
Mitglied: illuzione
17.12.2006 um 14:50 Uhr
Hallo Smiley,

Der Nachrichtendienst müsste auf beiden Computern aktiviert sein um die "net send" Funktion verwenden zu können. Hast du diese vielleicht mit xp-Antispy deaktiviert? Falls du weitere Fragen hast müsstest du mal im Netzwerkbereich fragen, kenne mich da auch nicht so aus.

mfg illu###e
Bitte warten ..
Mitglied: miniversum
17.12.2006 um 16:17 Uhr
Da wirst du auch Probleme mit der IP bekommen.
Schau mal nach was in der Variablen %IP% steht.
desweiteren könntest du noch (ist einfach nur schöner udn ncith so fehleranfällig) die restliche IP die du abfrägst begrenzen auf die 255 udn auch kontrollieren das es ne Zahl ist.

miniversum
Bitte warten ..
Mitglied: Smiley
17.12.2006 um 16:41 Uhr
Kannst du mir da Tipps geben? Ich hab keine Ahnung wie ich das Limitiere.

Außerdem hab ich MIR die Nachrichten geschrieben und der Dienst ist an. (127.0.0.1)


MfG
Bitte warten ..
Mitglied: miniversum
17.12.2006 um 16:52 Uhr
if $IP% lss 256 then..
bzw.
if not $IP% lss 256 then..

schau doch mal die hilfe zum IF Befehl an.

miniversum
Bitte warten ..
Mitglied: illuzione
17.12.2006 um 17:03 Uhr
Hallo Smiley,
Die Variable %IP% - wenn ich mich nicht täusche - ist auch falsch.

01.
@echo off 
02.
 
03.
TITLE Nachricht 
04.
 
05.
echo. 
06.
echo Bitte letzten IP Block eingeben: 
07.
set /P block4= 
08.
echo. 
09.
echo. 
10.
echo Die komplette IP lautet: 
11.
set IP=192.168.0.%block4% 
12.
echo %IP% 
13.
echo. 
14.
pause>NUL
Schau dir mal folgendes Beispiel an, hoffe es wird deutlich.

mfg illu###e
Bitte warten ..
Mitglied: Smiley
17.12.2006 um 18:07 Uhr
Nein das geht auch ohne diesen Umweg. Ich hab das auch in anderen Batchs so gemacht, da funktioniert es.

MfG
Bitte warten ..
Mitglied: illuzione
17.12.2006 um 18:22 Uhr
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.
01.
@echo off 
02.
:frage 
03.
set var= 
04.
set /P var=Wahl:  
05.
if not [%var%]==[]; set var=%var:~0,1% 
06.
if [%var%]==[0] 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:
01.
@echo off 
02.
 
03.
TITLE Nachricht 
04.
 
05.
echo. 
06.
echo Bitte letzten IP Block eingeben: 
07.
set /P block4= 
08.
echo. 
09.
echo. 
10.
echo Die komplette IP lautet: 
11.
set IP=192.168.0.%block4% 
12.
echo %IP% 
13.
echo. 
14.
pause>NUL
FALSCH:
01.
@echo off 
02.
 
03.
TITLE Nachricht 
04.
 
05.
echo. 
06.
echo Bitte letzten IP Block eingeben: 
07.
SET /p ip=192.168.0. 
08.
echo %IP% 
09.
echo. 
10.
pause>NUL
Du wirst sehen die Ausgaben unterscheiden sich.

mfg illu###e
Bitte warten ..
Mitglied: illuzione
17.12.2006 um 20:56 Uhr
Hallo Smiley,
Habe mir nochmal Zeit für diese Batch genommen. Hier ist der komplette Code.

01.
@echo off 
02.
:start 
03.
cls 
04.
echo. 
05.
echo Bitte den 4. IP-Block eingeben. 
06.
set /P IP4=192.168.1. 
07.
set IP=192.168.1.%IP4% 
08.
cls 
09.
echo. 
10.
echo Bitte Nachricht eingeben 
11.
set /P MSG= 
12.
cls 
13.
echo Wieviel Mal soll die Nachricht versendet werden? 
14.
set choice= 
15.
set /P choice=Auswahl:  
16.
if not [%choice%]==[] set choice=%choice:~0,1% 
17.
if [%choice%] ==[1] goto einmal 
18.
if [%choice%]==[2] goto zweimal 
19.
if [%choice%]==[3] goto dreimal 
20.
if [%choice%]==[0] goto endlos 
21.
 
22.
:endlos 
23.
net send %IP% %MSG% 
24.
goto endlos 
25.
:einmal 
26.
net send %IP% %MSG% 
27.
goto frage 
28.
:zweimal 
29.
net send %IP% %MSG% 
30.
net send %IP% %MSG% 
31.
goto frage 
32.
:dreimal 
33.
net send %IP% %MSG% 
34.
net send %IP% %MSG% 
35.
net send %IP% %MSG% 
36.
goto frage 
37.
 
38.
:frage 
39.
cls 
40.
echo Noch eine Nachricht? 
41.
echo. 
42.
echo 1 = Ja 
43.
echo 0 = Nein 
44.
echo. 
45.
set choice2= 
46.
set /P choice2=Auswahl:  
47.
if not [%choice2%]==[] set choice2=%choice2:~0,1% 
48.
if [%choice2%] ==[1] goto start 
49.
if [%choice2%] ==[0] goto nein 
50.
echo %choice2% ist keine gueltige Eingabe. 
51.
goto frage 
52.
: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
Bitte warten ..
Mitglied: Smiley
18.12.2006 um 13:24 Uhr
Danke für eure Hilfe.
Bringen tut das nichts, klar. Es ist auch nur so ein Programm um IF befehle zu üben.
Die endlos Schleife ist dazu da Leute über LAN zu ärgern, wozu sonst? :D :D


MfG
Bitte warten ..
Mitglied: Biber
18.12.2006 um 17:43 Uhr
Moin Smiley,

den letzten Post von Dir interpretiere ich mal so, dass dieses Lernziel erreicht ist und setze hier mal den grünen Haken und schließe diesen Thread.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
Internetverbindung funktioniert erst nach ipconfig renew (6)

Frage von Joshh1 zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst W2008 R2 msiinstaller funktioniert nicht mehr (5)

Frage von Alix zum Thema Windows Server ...

C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Router & Routing
Transparenter Proxy funktioniert nicht? (3)

Frage von mrserious73 zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...