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

3 Variablen in Batch vergleichen

Frage Entwicklung Batch & Shell

Mitglied: FaSiDavid1

FaSiDavid1 (Level 1) - Jetzt verbinden

16.07.2008, aktualisiert 17.07.2008, 4843 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst (Batch) Nummern vergleichen (3)

Frage von clragon zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...