バッチ ファイルでの文字列比較

Siddharth Bishnoi 2023年3月20日
  1. if および if-else コマンドをバッチ ファイルで使用した文字列比較
  2. バッチ ファイルで for ループを使用した文字列比較
バッチ ファイルでの文字列比較

文字列は、順序付けられた文字のコレクションです。

文字列は、バッチ ファイル内の条件付きコマンド、つまり ifif-else、および for コマンドを使用して比較できます。 文字列にはスペースや特殊文字が含まれている場合があり、通常の実行時にバッチ ファイルでエラーが発生する可能性があります。

また、文字列に二重引用符が含まれていると、エラーが発生する可能性があります。

このチュートリアルでは、ifif-else、および for コマンドを使用して、バッチ ファイル内の文字列を比較するさまざまな方法を説明します。

if および if-else コマンドをバッチ ファイルで使用した文字列比較

if コマンドは、設定値と期待値の間の条件演算と論理比較を実行します。 ファイルが存在するかどうかをチェックし、文字列を比較し、エラーをチェックすることさえできます。

if コマンドを使用した文字列比較

文字列が等しいかどうかを確認する例を見てみましょう。 それらが等しい場合、echo コマンドで出力が表示されます。

@echo off
SetLocal

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

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

コマンドの場合のテストファイル

出力:

コマンドなら出力

if-else コマンドを使用した文字列比較

@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

他の場合のテストファイル

出力:

elseコマンドの場合出力

ノート:

  1. 括弧の間にスペースを入れないでください。
  2. 文字列または変数にスペースまたは特殊文字が含まれる場合は、それらを二重引用符で囲みます。

if コマンドでは、/I を使用して大文字と小文字を区別せずに文字列を比較し、NOT を使用して条件が false の場合にコマンドを実行できます。

EQU (等しい)、NEQ (等しくない)、LSS (より小さい)、LEQ (以下)、GTR (より大きいか等しい) などの比較演算子も使用できます。 to)、GEQ (以上) 値を比較します。 ただし、これらの演算子は文字列の比較には使用できません。

if-else コマンドを使用した二重引用符を含む文字列の比較

文字列または変数に二重引用符が含まれている場合は、SetLocal コマンドで遅延展開を有効にします。 使用 ! それ以外の “""。

同じコードを以下の例に示します。

@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

二重引用符で囲まれた文字列の場合のテストファイル

出力:

二重引用符で囲まれた文字列の場合は出力

バッチ ファイルで for ループを使用した文字列比較

for コマンドは、一連のファイル内の各ファイルに対して指定されたコマンドを実行するために使用されます。

バッチ ファイルの for コマンドの構文を示します。

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

文字列を比較して Windows OS のバージョンを表示する必要がある例を見てみましょう。

@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

ループ用テストファイル

出力:

ループの出力

上記の例では、for ループを使用して文字列値を比較しています。 文字列値が HelloWorld と等しい場合、出力は match found として表示されます。

delims は区切り文字セットを指定し、tokens は各行のどのトークンが for ループに渡されるかを指定します。 for ループで引用符を使用するときは常に、usebackq を使用する必要があります。

そのため、バッチ ファイル内の文字列を比較するさまざまな方法について説明しました。 文字列を比較する以外に、これらの条件付きコマンドを使用して、テキスト ファイルまたはログ ファイルから指定された値またはテキストを検索することもできます。