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

Verschachtelte For-Abfrage mit IF

Frage Entwicklung Batch & Shell

Mitglied: bankaifan

bankaifan (Level 2) - Jetzt verbinden

27.05.2010 um 13:20 Uhr, 5226 Aufrufe, 6 Kommentare

Moin zusammen,

folgendes Problem:

ich hab n kleines Batch-Programm:

01.
for %%i in (0,1,255) do ( 
02.
for %%j in (0,1,255) do ( 
03.
for %%k in (0,1,255) do ( 
04.
ping %%i.%%j.%%k 
05.
::Soweit ist alles klar 
06.
:: Jetzt möchte ich hier das Errorlevel abfragen und nur bei EL 0 weiter machen, wenn ich aber hier ne IF-Abfrage einbaue sagt er mir Synthaxfehler 
07.
set != 
08.
FOR %%h in (0 1 2) do IF Errorlevel %%h00 set EL=%%h 
09.
IF not Errorlevel 200 set !=6 7 8 9 
10.
FOR %%z in (0 1 2 3 4 5 %!%) do IF Errorlevel %EL%%%z0 set EL=%EL%%%z 
11.
IF not Errorlevel 250 set !=6 7 8 9 
12.
FOR %%e in (0 1 2 3 4 5 %!%) do IF Errorlevel %EL%%%e set EL=%EL%%%e 
13.
ECHO Errorlevel: %EL% 
14.
set != 
15.
16.
17.
18.
 


Wäre schön wenn es doch i-wie gehen würde

Gruß Daniel
Mitglied: Snowman25
27.05.2010 um 13:31 Uhr
Hallo bankaifan,

01.
for %%i in (0,1,255) do ( 
02.
	for %%j in (0,1,255) do ( 
03.
		for %%k in (0,1,255) do ( 
04.
			ping %%i.%%j.%%k 
05.
			if ERRORLEVEL 0 ( 
06.
				set "ding=" 
07.
				FOR %%h in (0 1 2) do IF Errorlevel %%h00 set EL=%%h 
08.
				IF not Errorlevel 200 set ding=6 7 8 9 
09.
				FOR %%z in (0 1 2 3 4 5 %ding%) do IF Errorlevel %EL%%%z0 set EL=%EL%%%z 
10.
				IF not Errorlevel 250 set ding=6 7 8 9 
11.
				FOR %%e in (0 1 2 3 4 5 %ding%) do IF Errorlevel %EL%%%e set EL=%EL%%%e 
12.
				ECHO Errorlevel: %EL% 
13.
				set "ding=" 
14.
15.
16.
17.
)
man verwendet kein Ausrufezeichen als Variablennamen...
Gruß
Snow

PS: Ich glaube, du möchtest for /L in deinen 3 Schleifen verwenden..
PPS: Seit wann besteht eine IP aus nur 3 Oktetten?
PPPS
Das ding wird ganz schön lange brauchen...
Bitte warten ..
Mitglied: bankaifan
27.05.2010 um 13:47 Uhr
Danke dir....

scheint zu funktionieren
...

weiß es noch ned ganz sicher, aber sieht gut aus, danke dir

nur noch ne kleine ändernung

01.
if not ERRORLEVEL 1 ( 
02.
echo %%i.%%j.%%k.0 >> test.txt 
03.
)
wenn ich mich nicht irre bedeutet das ja, wenn ERRORLEVEL nicht 1 oder größer
Bitte warten ..
Mitglied: Snowman25
27.05.2010 um 13:52 Uhr
Zitat von bankaifan:
wenn ich mich nicht irre bedeutet das ja, wenn ERRORLEVEL nicht 1 oder größer^^
U:\>if /? 
Performs conditional processing in batch programs. 
 
IF [NOT] ERRORLEVEL number command 
IF [NOT] string1==string2 command 
IF [NOT] EXIST filename command 
 
  NOT               Specifies that Windows XP should carry out 
                    the command only if the condition is false. 
 
  ERRORLEVEL number Specifies a true condition if the last program run 
                    returned an exit code equal to or greater than the number 
                    specified. 
[...] 
%ERRORLEVEL% will expand into a string representation of 
the current value of ERRORLEVEL, provided that there is not already 
an environment variable with the name ERRORLEVEL, in which case you 
will get its value instead.  After running a program, the following 
illustrates ERRORLEVEL use: 
 
    goto answer%ERRORLEVEL% 
    :answer0 
    echo Program had return code 0 
    :answer1 
    echo Program had return code 1 
 
You can also using the numerical comparisons above: 
 
    IF %ERRORLEVEL% LEQ 1 goto okay
kurz: nö! NOT dreht die Aussage um.
Am besten, du benutzt Errorlevel mit den Vergleichsoperatoren:
    EQU - equal 
    NEQ - not equal 
    LSS - less than 
    LEQ - less than or equal 
    GTR - greater than 
    GEQ - greater than or equal
So kannst du sicherstellen, dass du auch da landest, wo du hin wolltest
Bitte warten ..
Mitglied: bankaifan
27.05.2010 um 13:54 Uhr
okee^^ jetzt hab ichs verstanden ... dankö

EDIT: Wenn ich if ERRORLEVEL EQU 0 (...
schreibe sagt er EQU ist synthaktisch an dieser stelle nicht verfügbar/verwendbar
oder muss ich dann dort mit %ERRORLEVEL% EQU 0 machen?
[ot]

*Ne tüte Kaffeebohnen reich*

[/ot]
Bitte warten ..
Mitglied: Snowman25
27.05.2010 um 13:58 Uhr
Zitat von bankaifan:
oder muss ich dann dort mit %ERRORLEVEL% EQU 0 machen?
Ja

[ot] *Ne tüte Kaffeebohnen reich* [/ot]
[ot] danke. Jetzt reichts aber auch mit dem rumgespamme von uns [/ot]
Bitte warten ..
Mitglied: bankaifan
27.05.2010 um 14:00 Uhr
Ok^^

[ot] hast recht [/ot]
Bitte warten ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Ähnliche Inhalte
Datenbanken
gelöst Verschachtelte SQL-Abfrage (4)

Frage von User1000 zum Thema Datenbanken ...

Batch & Shell
gelöst Seltsames Verhalten bei Errorlevel abfrage in FOR DO Schleife (1)

Frage von Kalma73 zum Thema Batch & Shell ...

Windows Tools
Delprof2 SetACL Studio Free for Commercial Use

Link von Dani zum Thema Windows Tools ...

Batch & Shell
gelöst FOR R Ordner Filterung? KLAMMERAUF BATCH KLAMMERZU (9)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (17)

Frage von Driphex zum Thema Exchange Server ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...