Top-Themen

Aktuelle Themen (A bis Z)

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

3 Variablen in Batch vergleichen

Frage Entwicklung Batch & Shell

Mitglied: FaSiDavid1

FaSiDavid1 (Level 1) - Jetzt verbinden

16.07.2008, aktualisiert 17.07.2008, 4882 Aufrufe, 14 Kommentare

Guten Morgen,
in dieser kleinen Batch möchte ich drei Variabelen vergleichen,
und zwar, wenn Service Name und Host Name gleich sind, dann soll bei erfüllter Übereinstimmung mit dem Service Status eine .wav-Datei abgespielt werden. Den Player und die .wav's habe ich, das ich nicht das Problem, mein Problem ist es viel mehr, die Variabelen so zu "verknüpfen", das sie prüfen was ich will ...

Ich sitze da nun schon 2-3 Tage dran, und bekomme es immer noch nicht hin!

Vielleicht könnte mir jemand von euch helfen, eh' ich völlig verzweifel!

Ganz liebe Grüße aus Lünen,
David

01.
@echo off 
02.
REM Change to directory of this batch file 
03.
cd /d %~dp0 
04.
 
05.
SET PLAYER="playsnd.exe" 
06.
SET WAV_PATH=. 
07.
 
08.
set SERVICE_NAME=%1 
09.
set SERVICE_STATUS=%2 
10.
set HOST_NAME=%3 
11.
set INFO_STRING=%5 
12.
 
13.
 
14.
IF %HOST_NAME% == 195.190.0.*** == %SERVICE_NAME% == memory 
15.
GOTO MEMORY 
16.
 
17.
:MEMORY 
18.
IF %SERVICE_STATUS% == "UNKNOWN" GOTO UNKNOWN_example_1 
19.
IF %SERVICE_STATUS% == "WARNING" GOTO WARNING_example_1 
20.
IF %SERVICE_STATUS% == "CRITICAL" GOTO CRITICAL_example_1 
21.
IF %SERVICE_STATUS% == "RECOVERY" GOTO RECOVERY_example_1 
22.
IF %SERVICE_STATUS% == "OK" GOTO OK 
23.
GOTO DONE 
24.
 
25.
:UNKNOWN_example_1 
26.
%PLAYER% "%WAV_PATH%\a_unknown_1.wav" 
27.
GOTO DONE 
28.
 
29.
:WARNING_example_1 
30.
%PLAYER% "%WAV_PATH%\a_warning_1.wav" 
31.
GOTO DONE 
32.
 
33.
:CRITICAL_example_1 
34.
%PLAYER% "%WAV_PATH%\a_critical_1.wav" 
35.
GOTO DONE 
36.
 
37.
:RECOVERY_example_1 
38.
%PLAYER% "%WAV_PATH%\a_recovery_1.wav" 
39.
GOTO DONE 
40.
 
41.
:OK 
42.
%PLAYER% "%WAV_PATH%\ok.wav" 
43.
GOTO DONE 
44.
 
45.
:DONE 
46.
 
Nunja, sollte es Fragen zu meinem Problem geben, ich beobachte den Threat in der Hoffnung auf schnellstmögliche Hilfe ... denn ich hätte das soo gerne endlich vom Tisch ...
Mitglied: bastla
16.07.2008 um 12:15 Uhr
Hallo FaSiDavid1 und willkommen im Forum!

die Variabelen so zu "verknüpfen", das sie prüfen was ich will ...
So ganz lässt sich nicht erkennen, was Du willst ...

Vielleicht erklärst Du nochmals, was eigentlich übereinstimmen soll (denn eine IP-Adresse, welche mit "195.190.0." beginnt und "memory" passen ja nun wirklich nicht zueinander) und wohin der Sprung dann gehen soll (derzeit landest Du immer bei :MEMORY) bzw, was bei Nicht-Übereinstimmung (was sich leichter einzeln prüfen lässt) zu geschehen hat.

Grüße
bastla
Bitte warten ..
Mitglied: FaSiDavid1
16.07.2008 um 12:52 Uhr
Hallo,

also, es geht um eine Appliance die 3 Variablen liefert.
1. Hostname
2. Service Name
3. Status


%HOST_NAME% == 195.190.0.*** | wenn das übereinstimmt,
und
%SERVICE_NAME% == memory | wen das übereinstimmt,
dann soll geschaut werden ob der Status
%SERVICE_STATUS% == "UNKNOWN" | UNKNOWN ist, oder eben einen anderen Status hat. Sollte dies der Fall sein, soll halt entsprechend "gehandelt" bzw. vorgegangen werden.

Ich hoffe das es nun verständlicher ist?
Ich weiss selbst nicht wo mir der Kopf steht und daher tue ich mich wahrscheinlich auch schwer das Problem "gut" beschreiben zu können

Ich hoffe trotzdem weiter auf eure Hilfe!

Liebe Grüße und Danke,
David
Bitte warten ..
Mitglied: bastla
16.07.2008 um 13:08 Uhr
Hallo FaSiDavid1!

Dann etwa so:
01.
if "%HOST_NAME:~,10%"=="195.190.0." if /i "%SERVICE_NAME%"=="memory" goto :MEMORY 
02.
echo Mindestens ein Kriterium nicht erfüllt! 
03.
goto :DONE 
04.
 
05.
:MEMORY 
06.
...
Etwas flexibler wäre folgende Zeile 1:
01.
echo %HOST_NAME%|findstr /b "195.190.0.">nul && if /i "%SERVICE_NAME%"=="memory" goto :MEMORY
Grüße
bastla
Bitte warten ..
Mitglied: FaSiDavid1
16.07.2008 um 13:35 Uhr
Hmm ... ich glaube wir reden NOCH aneinander vorbei.

es muss so sein, ich das für beliebig viele "Host Namen" und "Service Namen" die .bat Datei erweitern kann, das wäre am besten. Die "Service Stati" sind immer gleich, also entweder UNKNOWN, WARNING, CRITICAL, RECOVERY oder OK.

Ich möchte also, das wenn "Host Name" und "Service Name" mit den vorgegeben Werten übereinstimmen, das dann geschaut wird, welcher Status liegt vor, und das dann dementsprechend gehandelt wird. Sollte es keine Übereinstimmung geben, wird ein "default" abgefackelt, das stellt für mich allerdings kein Problem da, sondern viel mehr die Vergleiche der Variablen.
01.
@echo off 
02.
REM Change to directory of this batch file 
03.
cd /d %~dp0 
04.
 
05.
SET PLAYER="playsnd.exe" 
06.
SET WAV_PATH=. 
07.
 
08.
set SERVICE_NAME=%1 
09.
set SERVICE_STATUS=%2 
10.
set HOST_NAME=%3 
11.
set INFO_STRING=%5 
12.
 
13.
 
14.
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "UNKNOWN" GOTO UNKNOWN_example_1 
15.
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "WARNING" GOTO WARNING_example_1 
16.
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "CRITICAL" GOTO CRITICAL_example_1 
17.
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "RECOVERY" GOTO RECOVERY_example_1 
18.
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "OK" GOTO OK 
19.
GOTO DONE
< WENN %SERVICE NAME% der Vorgabe "LAPTOP" entspricht, UND, %SERVICE NAME% der Vorgabe "memory" entspricht und dann der Status "UNKNOWN" ist ... springe zu "UNKNOWN" (etc.)
< ein DEFAULT wird es natürlich auch gebeN!
01.
																 
02.
:UNKNOWN_example_1 
03.
%PLAYER% "%WAV_PATH%\a_unknown_1.wav" 
04.
GOTO DONE 
05.
	 
06.
:WARNING_example_1 
07.
%PLAYER% "%WAV_PATH%\a_warning_1.wav" 
08.
GOTO DONE 
09.
 
10.
:CRITICAL_example_1 
11.
%PLAYER% "%WAV_PATH%\a_critical_1.wav" 
12.
GOTO DONE 
13.
 
14.
:RECOVERY_example_1 
15.
%PLAYER% "%WAV_PATH%\a_recovery_1.wav"  
16.
GOTO DONE 
17.
 
18.
:OK 
19.
%PLAYER% "%WAV_PATH%\ok.wav"  
20.
GOTO DONE 
21.
	 
22.
:DONE 
23.
 
Bitte warten ..
Mitglied: bastla
16.07.2008 um 14:02 Uhr
Hallo FaSiDavid1!

Eine typische Abfrage könnte dann eben so aussehen:
01.
IF /i "%HOST_NAME%"=="LAPTOP" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="UNKNOWN" GOTO UNKNOWN_example_1
Nach dem selben Schema kannst Du dann alle anderen Möglichkeiten erfassen.

Dein Beispiel von oben mit
01.
IF %HOST_NAME% == 195.190.0.*** ...
kann allerdings (auch abgesehen von den unnötigen Leerzeichen) nur funktionieren, wenn tatsächlich ein Vergleich mit dem Text "195.190.0.***" gewünscht wäre, da "*" hier keine Wildcardfunktion hat, sondern als Zeichen verglichen wird - daher musst Du auf eine der beiden oben dargestellten Varianten (Teilstring, zB erste 10 Zeichen, oder Suche mit "findstr" oder "find") ausweichen.

Grüße
bastla
Bitte warten ..
Mitglied: FaSiDavid1
16.07.2008 um 14:08 Uhr
Danke, ich probiere das mal aus und lass' dann von mir hören ;)

Liebe Grüße,
David
Bitte warten ..
Mitglied: FaSiDavid1
16.07.2008 um 15:26 Uhr
Sooo ... so sieht das Mopped nun aus ;)
Denke ganz gut, denn wenn ich es über die Eingabeaufforderung starte bekomme ich KEINE Fehler angezeigt.

Wenn die .bat allerdings ausgeführt wird, sieht man kurz das DOS Fenster (nur ganz schwach und kurz) und hört allerdings keinen Sound oder so ...

Kann mir da jemand weiterhelfen?

-Danke schoneinmal für die Hilfe bisher!

Hier die aktuelle (und wohl auch funktionsfähige) .bat - Datei
01.
@echo off 
02.
REM Change to directory of this batch file 
03.
cd /d %~dp0 
04.
 
05.
SET PLAYER="playsnd.exe" 
06.
SET WAV_PATH=. 
07.
 
08.
set SERVICE_NAME=%1 
09.
set SERVICE_STATUS=%2 
10.
set HOST_NAME=%3 
11.
set INFO_STRING=%5 
12.
 
13.
 
14.
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="UNKNOWN" GOTO UNKNOWN_example_1 
15.
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="WARNING" GOTO WARNING_example_1 
16.
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="CRITICAL" GOTO CRITICAL_example_1 
17.
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="RECOVERY" GOTO RECOVERY_example_1 
18.
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="OK" GOTO OK 
19.
 
20.
IF /i "%SERVICE_STATUS%"=="UNKNOWN" GOTO UNKNOWN_default_1 
21.
IF /i "%SERVICE_STATUS%"=="WARNING" GOTO WARNING_default_1 
22.
IF /i "%SERVICE_STATUS%"=="CRITICAL" GOTO CRITICAL_default_1 
23.
IF /i "%SERVICE_STATUS%"=="RECOVERY" GOTO RECOVERY_default_1 
24.
IF /i "%SERVICE_STATUS%"=="OK" GOTO OK 
25.
GOTO DONE 
26.
																 
27.
:UNKNOWN_example_1 
28.
%PLAYER% "%WAV_PATH%\a_unknown_1.wav" 
29.
GOTO DONE 
30.
	 
31.
:WARNING_example_1 
32.
%PLAYER% "%WAV_PATH%\a_warning_1.wav" 
33.
GOTO DONE 
34.
 
35.
:CRITICAL_example_1 
36.
%PLAYER% "%WAV_PATH%\a_critical_1.wav" 
37.
GOTO DONE 
38.
 
39.
:RECOVERY_example_1 
40.
%PLAYER% "%WAV_PATH%\a_recovery_1.wav"  
41.
GOTO DONE 
42.
 
43.
:UNKNOWN_default_1 
44.
%PLAYER% "%WAV_PATH%\d_unknown_1.wav" 
45.
GOTO DONE 
46.
	 
47.
:WARNING_default_1 
48.
%PLAYER% "%WAV_PATH%\d_warning_1.wav" 
49.
GOTO DONE 
50.
 
51.
:CRITICAL_default_1 
52.
%PLAYER% "%WAV_PATH%\d_critical_1.wav" 
53.
GOTO DONE 
54.
 
55.
:RECOVERY_default_1 
56.
%PLAYER% "%WAV_PATH%\d_recovery_1.wav"  
57.
GOTO DONE 
58.
 
59.
:OK 
60.
GOTO DONE 
61.
	 
62.
:DONE
Bitte warten ..
Mitglied: bastla
16.07.2008 um 15:41 Uhr
Hallo FaSiDavid1!

Mach einmal aus dem "echo off" ein "echo on" und baue am Ende noch "pause" ein - dann kannst Du den Ablauf nachvollziehen ...

... und außerdem könnte ja alles OK sein.

Grüße
bastla
Bitte warten ..
Mitglied: FaSiDavid1
16.07.2008 um 16:35 Uhr
01.
REM Change to directory of this batch file 
02.
 
03.
cmd\\ 
04.
 
05.
\\cmd>SET PLAYER=\"playsnd.exe\" 
06.
 
07.
\\cmd>SET WAV_PATH=. 
08.
 
09.
\\cmd>set SERVICE_NAME=\"memory\" 
10.
 
11.
md>set SERVICE_STATUS=\"WARNING\" 
12.
 
13.
\\cmd>set HOST_NAME=\"195.190.0.122\" 
14.
 
15.
\\cmd>set INFO_STRING=\"Memory usage: total:50 
16.
2.48 Mb - used: 417.41 Mb (83%) - free: 85.07 Mb (17%)\" 
17.
 
18.
\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" i 
19.
f /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"UNKNOWN\" GOTO UNKNOWN_example_1 
20.
 
21.
\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" i 
22.
f /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"WARNING\" GOTO WARNING_example_1 
23.
 
24.
\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" i 
25.
f /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"CRITICAL\" GOTO CRITICAL_example_1 
26.
 
27.
\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" i 
28.
f /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"RECOVERY\" GOTO RECOVERY_example_1 
29.
 
30.
\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" if /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"OK\" GOTO OK 
31.
 
32.
\\cmd>IF /I \"\"WARNING\"\" == \"UNKNOWN\" GOTO UNKNOWN_default_1 
33.
 
34.
\\cmd>IF /I \"\"WARNING\"\" == \"WARNING\" GOTO WARNING_default_1 
35.
 
36.
\\cmd>IF /I \"\"WARNING\"\" == \"CRITICAL\" GOTO CRITICAL_default_1 
37.
 
38.
\\cmd>IF /I \"\"WARNING\"\" == \"RECOVERY\" GOTO RE 
39.
COVERY_default_1 
40.
 
41.
\\cmd>IF /I \"\"WARNING\"\" == \"OK\" GOTO OK 
42.
 
43.
\\cmd>GOTO DONE 
44.
 
45.
\\cmd>PAUSE
Das sieht soweit ganz gut aus, allerdings fackelt er nicht die gwünschte Aktion ab, wenn wie hier, ein WARNING auftritt. Kann es daran liegen, das er eventuell 2 mal das WARNING abfackeln will, da er den HOST einmal expliziet erkennt und einmal weil er als DEFAULT läuft?
Ich weiss nicht mehr weiter ... *HILFE* ;)

Dankeschön, das ich erstmal bis hier hin gekommen bin ;)

Ich denke es ist nicht mehr weit ^^

Liebe Grüße,
David
Bitte warten ..
Mitglied: bastla
16.07.2008 um 16:39 Uhr
Hallo FaSiDavid1!

Verwende bitte beim Posten < code>-Tags (ohne Leerzeichen) - damit wird's leichter lesbar ...

... aber soviel ist zu erkennen: Das Problem sind die Anführungszeichen - die von mir verwendete Schreibweise war davon ausgegangen, dass in der Variable keine Anführungszeichen enthalten wären. Lasse daher in den "if"-Zeilen die Anführungszeichen um "%SERVICE_NAME%" und "%SERVICE_STATUS%" jeweils weg.

Kann es daran liegen, das er eventuell 2 mal das WARNING abfackeln will, da er den HOST einmal expliziet erkennt und einmal weil er als DEFAULT läuft?
Der HOST wird nicht erkannt, da "195.190.0.122" ja nicht als "zentrale" interpretiert werden kann.

Grüße
bastla
Bitte warten ..
Mitglied: FaSiDavid1
16.07.2008 um 17:15 Uhr
01.
@echo on 
02.
REM Change to directory of this batch file 
03.
cd /d %~dp0 
04.
SET PLAYER="playsnd.exe"SET WAV_PATH=. 
05.
 
06.
set SERVICE_NAME=%1 
07.
set SERVICE_STATUS=%2 
08.
set HOST_NAME=%3 
09.
 
10.
set INFO_STRING=%5 
11.
 
12.
 
13.
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==UNKNOWN GOTO UNKNOWN_example_1 
14.
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==WARNING GOTO WARNING_example_1 
15.
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==CRITICAL GOTO CRITICAL_example_1 
16.
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==RECOVERY GOTO RECOVERY_example_1 
17.
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==OK GOTO OK 
18.
IF /i %SERVICE_STATUS%==UNKNOWN GOTO UNKNOWN_default_1 
19.
IF /i %SERVICE_STATUS%==WARNING GOTO WARNING_default_1 
20.
IF /i %SERVICE_STATUS%==CRITICAL GOTO CRITICAL_default_1 
21.
IF /i %SERVICE_STATUS%==RECOVERY GOTO RECOVERY_default_1 
22.
IF /i %SERVICE_STATUS%==OK GOTO OK 
23.
GOTO DONE 
24.
																 
25.
:UNKNOWN_example_1 
26.
%PLAYER% "%WAV_PATH%\a_unknown_1.wav" 
27.
GOTO DONE 
28.
	 
29.
:WARNING_example_1 
30.
%PLAYER% "%WAV_PATH%\a_warning_1.wav" 
31.
GOTO DONE 
32.
 
33.
:CRITICAL_example_1 
34.
%PLAYER% "%WAV_PATH%\a_critical_1.wav" 
35.
GOTO DONE 
36.
 
37.
:RECOVERY_example_1 
38.
%PLAYER% "%WAV_PATH%\a_recovery_1.wav"  
39.
GOTO DONE 
40.
 
41.
:UNKNOWN_default_1 
42.
%PLAYER% "%WAV_PATH%\d_unknown_1.wav" 
43.
GOTO DONE 
44.
	 
45.
:WARNING_default_1 
46.
%PLAYER% "%WAV_PATH%\d_warning_1.wav" 
47.
GOTO DONE 
48.
 
49.
:CRITICAL_default_1 
50.
%PLAYER% "%WAV_PATH%\d_critical_1.wav" 
51.
GOTO DONE 
52.
 
53.
:RECOVERY_default_1 
54.
%PLAYER% "%WAV_PATH%\d_recovery_1.wav"  
55.
GOTO DONE 
56.
 
57.
:OK 
58.
GOTO DONE 
59.
	 
60.
:DONE 
61.
 
62.
PAUSE
so sieht es nun bei mir aus

01.
REM Change to directory of this batch file 
02.
 
03.
cd /d bin\cmd\ 
04.
 
05.
cmd>SET PLAYER="playsnd.exe" 
06.
 
07.
cmd>SET WAV_PATH=. 
08.
 
09.
cmd>set SERVICE_NAME="memory" 
10.
 
11.
cmd>set SERVICE_STATUS="WARNING" 
12.
 
13.
cmd>set HOST_NAME="195.190.0.122" 
14.
 
15.
cmd>set INFO_STRING="Memory usage: total:50 
16.
2.48 Mb - used: 431.05 Mb (86%) - free: 71.43 Mb (14%)" 
17.
 
18.
cmd>IF /I "195.190.0.122" == 195.190.0.122 
19.
if /I "memory" == memory if /I "WARNING" == UNKNOWN GOTO UNKNOWN_example_1 
20.
 
21.
cmd>IF /I "195.190.0.122" == 195.190.0.122 
22.
if /I "memory" == memory if /I "WARNING" == WARNING GOTO WARNING_example_1 
23.
 
24.
cmd>IF /I "195.190.0.122" == 195.190.0.122 
25.
if /I "memory" == memory if /I "WARNING" == CRITICAL GOTO CRITICAL_example_1 
26.
 
27.
cmd>IF /I "195.190.0.122" == 195.190.0.122 
28.
if /I "memory" == memory if /I "WARNING" == RECOVERY GOTO RECOVERY_example_1 
29.
 
30.
cmd>IF /I "195.190.0.122" == 195.190.0.122 
31.
if /I "memory" == memory if /I "WARNING" == OK GOTO OK 
32.
 
33.
cmd>IF /I "WARNING" == UNKNOWN GOTO UNKNOWN 
34.
_default_1 
35.
 
36.
cmd>IF /I "WARNING" == WARNING GOTO WARNING_default_1 
37.
 
38.
cmd>IF /I "WARNING" == CRITICAL GOTO CRITIC 
39.
AL_default_1 
40.
 
41.
cmd>IF /I "WARNING" == RECOVERY GOTO RECOVERY_default_1 
42.
 
43.
cmd>IF /I "WARNING" == OK GOTO OK 
44.
 
45.
cmd>GOTO DONE 
46.
 
47.
cmd>PAUSE 
48.
Drücken Sie eine beliebige Taste . . .

so wenn er die IP "trifft"
01.
REM Change to directory of this batch file 
02.
 
03.
cd /d E bin\cmd\ 
04.
 
05.
cmd>SET PLAYER="playsnd.exe" 
06.
 
07.
md>SET WAV_PATH=. 
08.
 
09.
cmd>set SERVICE_NAME="memory" 
10.
 
11.
cmd>set SERVICE_STATUS="WARNING" 
12.
 
13.
cmd>set HOST_NAME="195.190.0.2" 
14.
 
15.
cmd>set INFO_STRING="Memory usage: total:19 
16.
1.48 Mb - used: 168.98 Mb (88%) - free: 22.50 Mb (12%)" 
17.
 
18.
cmd>IF /I "195.190.0.2" == 195.190.0.122 if 
19.
 /I "memory" == memory if /I "WARNING" == UNKNOWN GOTO UNKNOWN_example_1 
20.
 
21.
cmd>IF /I "195.190.0.2" == 195.190.0.122 if 
22.
 /I "memory" == memory if /I "WARNING" == WARNING GOTO WARNING_example_1 
23.
 
24.
cmd>IF /I "195.190.0.2" == 195.190.0.122 if 
25.
 /I "memory" == memory if /I "WARNING" == CRITICAL GOTO CRITICAL_example_1 
26.
 
27.
cmd>IF /I "195.190.0.2" == 195.190.0.122 if 
28.
 /I "memory" == memory if /I "WARNING" == RECOVERY GOTO RECOVERY_example_1 
29.
 
30.
cmd>IF /I "195.190.0.2" == 195.190.0.122 if 
31.
 /I "memory" == memory if /I "WARNING" == OK GOTO OK 
32.
 
33.
cmd>IF /I "WARNING" == UNKNOWN GOTO UNKNOWN_default_1 
34.
 
35.
cmd>IF /I "WARNING" == WARNING GOTO WARNING_default_1 
36.
 
37.
cmd>IF /I "WARNING" == CRITICAL GOTO CRITICAL_default_1 
38.
 
39.
cmd>IF /I "WARNING" == RECOVERY GOTO RECOVERY_default_1 
40.
 
41.
cmd>IF /I "WARNING" == OK GOTO OK 
42.
 
43.
cmd>GOTO DONE 
44.
 
45.
cmd>PAUSE 
46.
Drücken Sie eine beliebige Taste . . .
und so wenn er die IP nicht trifft ...

hoffe das Hilft mein Problem nachzuvollziehen!

Lieben Gruß,
David
Bitte warten ..
Mitglied: bastla
16.07.2008 um 21:09 Uhr
Hallo FaSiDavid1!

Bringen wir das Ganze auf eine einheitliche Schreibweise - ändere dazu die "set"-Zeilen 6 bis 10 auf:
01.
set "SERVICE_NAME=%~1" 
02.
set "SERVICE_STATUS=%~2" 
03.
set "HOST_NAME=%~3" 
04.
 
05.
set "INFO_STRING=%~5"
und setze dann bei allen "if"-Zeilen (hier am Beispiel der Zeile 13) Anführungszeichen auf der linken und rechten Seite des Vergleiches:
01.
if /i "%HOST_NAME%"=="195.190.0.122" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="UNKNOWN" GOTO UNKNOWN_example_1
Achte dabei darauf, dass es bei den konstanten Vergleichswerten (etwa der IP-Adresse) zwischen den Anführungszeichen und auch vor und nach "==" keine Leerzeichen gibt.

Grüße
bastla
Bitte warten ..
Mitglied: FaSiDavid1
17.07.2008 um 11:12 Uhr
Danke bastla für deinen super Support ;)

Es funktioniert jetzt einwandfrei

*freu*

kannst du mir denn noch verraten wofür
01.
 /i 
steht?
das verstehe ich noch nicht so ganz.

Also, noch einmal *vielen Dank*!

Liebe Grüße und vielleicht bis zum nächsten Mal *lach*,
David
Bitte warten ..
Mitglied: Biber
17.07.2008 um 11:23 Uhr
Moin FiSiDavid1,

Hilfe zum /i-Parameter des IF-Befehls bekommst Du am CMD-Prompt nicht etwa mit
01.
bastla /?   <-------- falsch!
...sondern mit..
01.
IF /?    <---- richtig
... angezeigt.
Dort steht:

Die /I-Option wird angegeben, um die Groß-/Kleinschreibung beim Vergleich zu ignorieren. Die /I-Option kann auch in der Form Zeichenfolge1==Zeichenfolge2 verwendet werden. Diese Vergleiche sind allgemein, das heißt, wenn beide Zeichenfolgen nur aus Ziffern bestehen, werden die Zeichenfolgen in Zahlen umgewandelt, und es wird ein nummerischer Vergleich durchgeführt.

Ich setze den Beitrag mal auf "beantwortet" und "geschlossen".

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Abfrage Vergleiche mit Variable goto
gelöst Frage von ZunarasBatch & Shell4 Kommentare

Schönen guten Tag! ich habe mir ein Script gebastelt. Mehr nach dem Try and Error Prinzip als wirklichem Können. ...

Batch & Shell
In Batch eine Text Variable und ein Array vergleichen
Frage von DrMarksmanBatch & Shell5 Kommentare

Hallo Leute! Ich habe mich wieder zu meinen Ursprüngen des Programmierens zurück begeben und bin dabei ein kleines Programm ...

Batch & Shell
Batch - Variablen
gelöst Frage von Marlon1Batch & Shell2 Kommentare

Hallo, Ich habe eine Frage zu Variablen. Und zwar ob es irgendwie geht das Batch mit ein IF Befehl ...

Batch & Shell
Batch vergleich von zwei dateien
gelöst Frage von realdavegerBatch & Shell6 Kommentare

Hallo, nach Jahrelangem zugucken, habe ich jetzt schlussendlich eine Frage welche ich selbst stelle. Ich versuche 2 zeiten aus ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 5 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 16 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 18 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner4 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...