Zeichenfolgenvergleich in Batch-Datei

Siddharth Bishnoi 20 März 2023
  1. Zeichenfolgenvergleich mit den Befehlen if und if-else in der Batch-Datei
  2. Zeichenfolgenvergleich mit der for-Schleife in der Batch-Datei
Zeichenfolgenvergleich in Batch-Datei

Ein String ist eine geordnete Sammlung von Zeichen.

Strings können mit bedingten Befehlen in einer Batch-Datei verglichen werden, d. h. mit den Befehlen if, if-else und for. Zeichenfolgen können Leerzeichen und Sonderzeichen enthalten, was bei normaler Ausführung zu Fehlern in der Batch-Datei führen kann.

Auch wenn die Zeichenfolge ein doppeltes Anführungszeichen enthält, kann dies zu einem Fehler führen.

In diesem Tutorial werden verschiedene Möglichkeiten zum Vergleichen von Zeichenfolgen in einer Batch-Datei mit den Befehlen if, if-else und for vermittelt.

Zeichenfolgenvergleich mit den Befehlen if und if-else in der Batch-Datei

Der if-Befehl führt bedingte Operationen und logische Vergleiche zwischen einem eingestellten Wert und einem erwarteten Wert durch. Es kann prüfen, ob eine Datei existiert, Zeichenfolgen vergleichen und sogar auf Fehler prüfen.

Zeichenkettenvergleich mit dem if-Befehl

Nehmen wir ein Beispiel, um zu prüfen, ob die Zeichenfolgen gleich sind. Wenn sie gleich sind, wird die Ausgabe mit dem Befehl echo angezeigt.

@echo off
SetLocal

set string1="Hello World"
set string2="Hello World"

if %string1% == %string2% (echo "Both the strings are equal")
cmd /k

testfile if command

Ausgang:

Ausgabe wenn Befehl

Zeichenkettenvergleich mit dem if-else-Befehl

@echo off
SetLocal

set string1="Hello World"
set string2="HELLO WORLD"
set string3="Hello World"


if %string1% == %string2% (echo string 1 and string 2 are equal echo the string is %string2%) else if %string1% == %string3% (echo string1 and string 3 are equal
echo the string is %string3%) else (echo all strings are different)
cmd /k

testfile if else

Ausgang:

output if else command

Notiz:

  1. Lassen Sie keine Leerzeichen zwischen den Klammern.
  2. Wenn die Zeichenfolgen oder Variablen Leerzeichen oder Sonderzeichen enthalten, setzen Sie sie in doppelte Anführungszeichen.

Mit dem Befehl if können Sie /I für einen String-Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung und NOT verwenden, um den Befehl auszuführen, wenn die Bedingung falsch ist.

Sie können auch Vergleichsoperatoren wie EQU (gleich), NEQ (ungleich), LSS (kleiner als), LEQ (kleiner oder gleich), GTR (größer als oder gleich) verwenden bis), GEQ (größer oder gleich) zum Vergleich der Werte. Diese Operatoren können jedoch nicht zum Vergleichen von Zeichenfolgen verwendet werden.

Vergleich von Zeichenfolgen mit doppelten Anführungszeichen mit dem Befehl if-else

Wenn der String oder die Variablen doppelte Anführungszeichen enthalten, aktivieren Sie die verzögerte Erweiterung mit dem Befehl SetLocal. Verwenden ! anstatt ".

Der Code dafür wird im folgenden Beispiel gezeigt:

@echo off
SetLocal EnableDelayedExpansion

set string1="Hello "World""
set string2=""HELLO WORLD""
set string3="Hello World"

if !string1! == !string2! (echo "string 1 and string 2 are equal") else if !string1! == !string3! (echo "string1 and string 3 are equal") else (echo "All strings are different")
cmd /k

testfile if else string with double quotes

Ausgang:

Ausgabe von Sonst-Strings mit doppelten Anführungszeichen

Zeichenfolgenvergleich mit der for-Schleife in der Batch-Datei

Der Befehl for wird verwendet, um einen bestimmten Befehl für jede Datei innerhalb eines Satzes von Dateien auszuführen.

Die Syntax des for-Befehls in einer Batch-Datei wird gezeigt.

for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]

Nehmen wir ein Beispiel, bei dem wir die Zeichenfolgen vergleichen müssen, um die Windows-Betriebssystemversion anzuzeigen:

@echo off
SetLocal EnableDelayedExpansion
for /f "usebackq tokens=1 delims=" %%I in ("C:\Users\Aastha Gas Harda\Desktop\testfile1.txt") do (
set string=%%I
echo %%I
if "%%~I" == "HelloWorld" (echo "match found") else (echo "match not found")
)
PAUSE

testfile for loop

Ausgang:

Ausgabe für Schleife

Im obigen Beispiel wird eine for-Schleife verwendet, um den String-Wert zu vergleichen. Wenn der Zeichenfolgenwert gleich HelloWorld ist, wird die Ausgabe als Übereinstimmung gefunden angezeigt.

Die delims geben einen Trennzeichensatz an, und die tokens geben an, welche Tokens aus jeder Zeile an die for-Schleife übergeben werden. Das usebackq muss immer dann verwendet werden, wenn wir in der for-Schleife Anführungszeichen verwenden.

Wir haben also verschiedene Möglichkeiten zum Vergleichen von Zeichenfolgen in Batch-Dateien besprochen. Neben dem Vergleich von Zeichenfolgen können diese bedingten Befehle auch verwendet werden, um bestimmte Werte oder Text aus Textdateien oder Protokolldateien zu finden.

Verwandter Artikel - Batch String