fasidavid1
Goto Top

3 Variablen in Batch vergleichen

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

@echo off
REM Change to directory of this batch file
cd /d %~dp0

SET PLAYER="playsnd.exe"  
SET WAV_PATH=.

set SERVICE_NAME=%1
set SERVICE_STATUS=%2
set HOST_NAME=%3
set INFO_STRING=%5


IF %HOST_NAME% == 195.190.0.*** == %SERVICE_NAME% == memory
GOTO MEMORY

:MEMORY
IF %SERVICE_STATUS% == "UNKNOWN" GOTO UNKNOWN_example_1  
IF %SERVICE_STATUS% == "WARNING" GOTO WARNING_example_1  
IF %SERVICE_STATUS% == "CRITICAL" GOTO CRITICAL_example_1  
IF %SERVICE_STATUS% == "RECOVERY" GOTO RECOVERY_example_1  
IF %SERVICE_STATUS% == "OK" GOTO OK  
GOTO DONE

:UNKNOWN_example_1
%PLAYER% "%WAV_PATH%\a_unknown_1.wav"  
GOTO DONE

:WARNING_example_1
%PLAYER% "%WAV_PATH%\a_warning_1.wav"  
GOTO DONE

:CRITICAL_example_1
%PLAYER% "%WAV_PATH%\a_critical_1.wav"  
GOTO DONE

:RECOVERY_example_1
%PLAYER% "%WAV_PATH%\a_recovery_1.wav"  
GOTO DONE

:OK
%PLAYER% "%WAV_PATH%\ok.wav"  
GOTO DONE

:DONE
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 ...

Content-Key: 92155

Url: https://administrator.de/contentid/92155

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: bastla
bastla 16.07.2008 um 12:15:25 Uhr
Goto Top
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
Mitglied: FaSiDavid1
FaSiDavid1 16.07.2008 um 12:52:04 Uhr
Goto Top
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 face-sad

Ich hoffe trotzdem weiter auf eure Hilfe!

Liebe Grüße und Danke,
David
Mitglied: bastla
bastla 16.07.2008 um 13:08:41 Uhr
Goto Top
Hallo FaSiDavid1!

Dann etwa so:
if "%HOST_NAME:~,10%"=="195.190.0." if /i "%SERVICE_NAME%"=="memory" goto :MEMORY  
echo Mindestens ein Kriterium nicht erfüllt!
goto :DONE

:MEMORY
...
Etwas flexibler wäre folgende Zeile 1:
echo %HOST_NAME%|findstr /b "195.190.0.">nul && if /i "%SERVICE_NAME%"=="memory" goto :MEMORY  
Grüße
bastla
Mitglied: FaSiDavid1
FaSiDavid1 16.07.2008 um 13:35:16 Uhr
Goto Top
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.
@echo off
REM Change to directory of this batch file
cd /d %~dp0

SET PLAYER="playsnd.exe"  
SET WAV_PATH=.

set SERVICE_NAME=%1
set SERVICE_STATUS=%2
set HOST_NAME=%3
set INFO_STRING=%5


IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "UNKNOWN" GOTO UNKNOWN_example_1  
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "WARNING" GOTO WARNING_example_1  
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "CRITICAL" GOTO CRITICAL_example_1  
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "RECOVERY" GOTO RECOVERY_example_1  
IF %HOST_NAME% == LAPTOP == %SERVICE_NAME% == memory AND %SERVICE_STATUS% == "OK" GOTO OK  
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!
																
:UNKNOWN_example_1
%PLAYER% "%WAV_PATH%\a_unknown_1.wav"  
GOTO DONE
	
:WARNING_example_1
%PLAYER% "%WAV_PATH%\a_warning_1.wav"  
GOTO DONE

:CRITICAL_example_1
%PLAYER% "%WAV_PATH%\a_critical_1.wav"  
GOTO DONE

:RECOVERY_example_1
%PLAYER% "%WAV_PATH%\a_recovery_1.wav"   
GOTO DONE

:OK
%PLAYER% "%WAV_PATH%\ok.wav"   
GOTO DONE
	
:DONE
Mitglied: bastla
bastla 16.07.2008 um 14:02:54 Uhr
Goto Top
Hallo FaSiDavid1!

Eine typische Abfrage könnte dann eben so aussehen:
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
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
Mitglied: FaSiDavid1
FaSiDavid1 16.07.2008 um 14:08:57 Uhr
Goto Top
Danke, ich probiere das mal aus und lass' dann von mir hören ;)

Liebe Grüße,
David
Mitglied: FaSiDavid1
FaSiDavid1 16.07.2008 um 15:26:12 Uhr
Goto Top
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
@echo off
REM Change to directory of this batch file
cd /d %~dp0

SET PLAYER="playsnd.exe"  
SET WAV_PATH=.

set SERVICE_NAME=%1
set SERVICE_STATUS=%2
set HOST_NAME=%3
set INFO_STRING=%5


IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="UNKNOWN" GOTO UNKNOWN_example_1  
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="WARNING" GOTO WARNING_example_1  
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="CRITICAL" GOTO CRITICAL_example_1  
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="RECOVERY" GOTO RECOVERY_example_1  
IF /i "%HOST_NAME%"=="zentrale" if /i "%SERVICE_NAME%"=="memory" if /i "%SERVICE_STATUS%"=="OK" GOTO OK  

IF /i "%SERVICE_STATUS%"=="UNKNOWN" GOTO UNKNOWN_default_1  
IF /i "%SERVICE_STATUS%"=="WARNING" GOTO WARNING_default_1  
IF /i "%SERVICE_STATUS%"=="CRITICAL" GOTO CRITICAL_default_1  
IF /i "%SERVICE_STATUS%"=="RECOVERY" GOTO RECOVERY_default_1  
IF /i "%SERVICE_STATUS%"=="OK" GOTO OK  
GOTO DONE
																
:UNKNOWN_example_1
%PLAYER% "%WAV_PATH%\a_unknown_1.wav"  
GOTO DONE
	
:WARNING_example_1
%PLAYER% "%WAV_PATH%\a_warning_1.wav"  
GOTO DONE

:CRITICAL_example_1
%PLAYER% "%WAV_PATH%\a_critical_1.wav"  
GOTO DONE

:RECOVERY_example_1
%PLAYER% "%WAV_PATH%\a_recovery_1.wav"   
GOTO DONE

:UNKNOWN_default_1
%PLAYER% "%WAV_PATH%\d_unknown_1.wav"  
GOTO DONE
	
:WARNING_default_1
%PLAYER% "%WAV_PATH%\d_warning_1.wav"  
GOTO DONE

:CRITICAL_default_1
%PLAYER% "%WAV_PATH%\d_critical_1.wav"  
GOTO DONE

:RECOVERY_default_1
%PLAYER% "%WAV_PATH%\d_recovery_1.wav"   
GOTO DONE

:OK
GOTO DONE
	
:DONE
Mitglied: bastla
bastla 16.07.2008 um 15:41:32 Uhr
Goto Top
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. face-wink

Grüße
bastla
Mitglied: FaSiDavid1
FaSiDavid1 16.07.2008 um 16:35:29 Uhr
Goto Top
REM Change to directory of this batch file

cmd\\

\\cmd>SET PLAYER=\"playsnd.exe\"  

\\cmd>SET WAV_PATH=.

\\cmd>set SERVICE_NAME=\"memory\"  

md>set SERVICE_STATUS=\"WARNING\"  

\\cmd>set HOST_NAME=\"195.190.0.122\"  

\\cmd>set INFO_STRING=\"Memory usage: total:50  
2.48 Mb - used: 417.41 Mb (83%) - free: 85.07 Mb (17%)\"  

\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" i  
f /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"UNKNOWN\" GOTO UNKNOWN_example_1  

\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" i  
f /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"WARNING\" GOTO WARNING_example_1  

\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" i  
f /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"CRITICAL\" GOTO CRITICAL_example_1  

\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" i  
f /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"RECOVERY\" GOTO RECOVERY_example_1  

\\cmd>IF /I \"\"195.190.0.122\"\" == \"zentrale\" if /I \"\"memory\"\" == \"memory\" if /I \"\"WARNING\"\" == \"OK\" GOTO OK  

\\cmd>IF /I \"\"WARNING\"\" == \"UNKNOWN\" GOTO UNKNOWN_default_1  

\\cmd>IF /I \"\"WARNING\"\" == \"WARNING\" GOTO WARNING_default_1  

\\cmd>IF /I \"\"WARNING\"\" == \"CRITICAL\" GOTO CRITICAL_default_1  

\\cmd>IF /I \"\"WARNING\"\" == \"RECOVERY\" GOTO RE  
COVERY_default_1

\\cmd>IF /I \"\"WARNING\"\" == \"OK\" GOTO OK  

\\cmd>GOTO DONE

\\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
Mitglied: bastla
bastla 16.07.2008 um 16:39:50 Uhr
Goto Top
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
Mitglied: FaSiDavid1
FaSiDavid1 16.07.2008 um 17:15:37 Uhr
Goto Top
@echo on
REM Change to directory of this batch file
cd /d %~dp0
SET PLAYER="playsnd.exe"SET WAV_PATH=.  

set SERVICE_NAME=%1
set SERVICE_STATUS=%2
set HOST_NAME=%3

set INFO_STRING=%5


IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==UNKNOWN GOTO UNKNOWN_example_1
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==WARNING GOTO WARNING_example_1
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==CRITICAL GOTO CRITICAL_example_1
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==RECOVERY GOTO RECOVERY_example_1
IF /i %HOST_NAME%==195.190.0.122 if /i %SERVICE_NAME%==memory if /i %SERVICE_STATUS%==OK GOTO OK
IF /i %SERVICE_STATUS%==UNKNOWN GOTO UNKNOWN_default_1
IF /i %SERVICE_STATUS%==WARNING GOTO WARNING_default_1
IF /i %SERVICE_STATUS%==CRITICAL GOTO CRITICAL_default_1
IF /i %SERVICE_STATUS%==RECOVERY GOTO RECOVERY_default_1
IF /i %SERVICE_STATUS%==OK GOTO OK
GOTO DONE
																
:UNKNOWN_example_1
%PLAYER% "%WAV_PATH%\a_unknown_1.wav"  
GOTO DONE
	
:WARNING_example_1
%PLAYER% "%WAV_PATH%\a_warning_1.wav"  
GOTO DONE

:CRITICAL_example_1
%PLAYER% "%WAV_PATH%\a_critical_1.wav"  
GOTO DONE

:RECOVERY_example_1
%PLAYER% "%WAV_PATH%\a_recovery_1.wav"   
GOTO DONE

:UNKNOWN_default_1
%PLAYER% "%WAV_PATH%\d_unknown_1.wav"  
GOTO DONE
	
:WARNING_default_1
%PLAYER% "%WAV_PATH%\d_warning_1.wav"  
GOTO DONE

:CRITICAL_default_1
%PLAYER% "%WAV_PATH%\d_critical_1.wav"  
GOTO DONE

:RECOVERY_default_1
%PLAYER% "%WAV_PATH%\d_recovery_1.wav"   
GOTO DONE

:OK
GOTO DONE
	
:DONE

PAUSE

so sieht es nun bei mir aus

REM Change to directory of this batch file

cd /d bin\cmd\

cmd>SET PLAYER="playsnd.exe"  

cmd>SET WAV_PATH=.

cmd>set SERVICE_NAME="memory"  

cmd>set SERVICE_STATUS="WARNING"  

cmd>set HOST_NAME="195.190.0.122"  

cmd>set INFO_STRING="Memory usage: total:50  
2.48 Mb - used: 431.05 Mb (86%) - free: 71.43 Mb (14%)"  

cmd>IF /I "195.190.0.122" == 195.190.0.122  
if /I "memory" == memory if /I "WARNING" == UNKNOWN GOTO UNKNOWN_example_1  

cmd>IF /I "195.190.0.122" == 195.190.0.122  
if /I "memory" == memory if /I "WARNING" == WARNING GOTO WARNING_example_1  

cmd>IF /I "195.190.0.122" == 195.190.0.122  
if /I "memory" == memory if /I "WARNING" == CRITICAL GOTO CRITICAL_example_1  

cmd>IF /I "195.190.0.122" == 195.190.0.122  
if /I "memory" == memory if /I "WARNING" == RECOVERY GOTO RECOVERY_example_1  

cmd>IF /I "195.190.0.122" == 195.190.0.122  
if /I "memory" == memory if /I "WARNING" == OK GOTO OK  

cmd>IF /I "WARNING" == UNKNOWN GOTO UNKNOWN  
_default_1

cmd>IF /I "WARNING" == WARNING GOTO WARNING_default_1  

cmd>IF /I "WARNING" == CRITICAL GOTO CRITIC  
AL_default_1

cmd>IF /I "WARNING" == RECOVERY GOTO RECOVERY_default_1  

cmd>IF /I "WARNING" == OK GOTO OK  

cmd>GOTO DONE

cmd>PAUSE
Drücken Sie eine beliebige Taste . . .

so wenn er die IP "trifft"
REM Change to directory of this batch file

cd /d E bin\cmd\

cmd>SET PLAYER="playsnd.exe"  

md>SET WAV_PATH=.

cmd>set SERVICE_NAME="memory"  

cmd>set SERVICE_STATUS="WARNING"  

cmd>set HOST_NAME="195.190.0.2"  

cmd>set INFO_STRING="Memory usage: total:19  
1.48 Mb - used: 168.98 Mb (88%) - free: 22.50 Mb (12%)"  

cmd>IF /I "195.190.0.2" == 195.190.0.122 if  
 /I "memory" == memory if /I "WARNING" == UNKNOWN GOTO UNKNOWN_example_1  

cmd>IF /I "195.190.0.2" == 195.190.0.122 if  
 /I "memory" == memory if /I "WARNING" == WARNING GOTO WARNING_example_1  

cmd>IF /I "195.190.0.2" == 195.190.0.122 if  
 /I "memory" == memory if /I "WARNING" == CRITICAL GOTO CRITICAL_example_1  

cmd>IF /I "195.190.0.2" == 195.190.0.122 if  
 /I "memory" == memory if /I "WARNING" == RECOVERY GOTO RECOVERY_example_1  

cmd>IF /I "195.190.0.2" == 195.190.0.122 if  
 /I "memory" == memory if /I "WARNING" == OK GOTO OK  

cmd>IF /I "WARNING" == UNKNOWN GOTO UNKNOWN_default_1  

cmd>IF /I "WARNING" == WARNING GOTO WARNING_default_1  

cmd>IF /I "WARNING" == CRITICAL GOTO CRITICAL_default_1  

cmd>IF /I "WARNING" == RECOVERY GOTO RECOVERY_default_1  

cmd>IF /I "WARNING" == OK GOTO OK  

cmd>GOTO DONE

cmd>PAUSE
Drücken Sie eine beliebige Taste . . .
und so wenn er die IP nicht trifft ...

hoffe das Hilft mein Problem nachzuvollziehen!

Lieben Gruß,
David
Mitglied: bastla
bastla 16.07.2008 um 21:09:05 Uhr
Goto Top
Hallo FaSiDavid1!

Bringen wir das Ganze auf eine einheitliche Schreibweise - ändere dazu die "set"-Zeilen 6 bis 10 auf:
set "SERVICE_NAME=%~1"  
set "SERVICE_STATUS=%~2"  
set "HOST_NAME=%~3"  

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:
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
Mitglied: FaSiDavid1
FaSiDavid1 17.07.2008 um 11:12:52 Uhr
Goto Top
Danke bastla für deinen super Support ;)

Es funktioniert jetzt einwandfrei face-smile

*freu*

kannst du mir denn noch verraten wofür
 /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
Mitglied: Biber
Biber 17.07.2008 um 11:23:19 Uhr
Goto Top
Moin FiSiDavid1,

Hilfe zum /i-Parameter des IF-Befehls bekommst Du am CMD-Prompt nicht etwa mit
bastla /?   <-------- falsch!
...sondern mit..
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