バッチ ファイルでの文字列比較
文字列は、順序付けられた文字のコレクションです。
文字列は、バッチ ファイル内の条件付きコマンド、つまり if
、if-else
、および for
コマンドを使用して比較できます。 文字列にはスペースや特殊文字が含まれている場合があり、通常の実行時にバッチ ファイルでエラーが発生する可能性があります。
また、文字列に二重引用符が含まれていると、エラーが発生する可能性があります。
このチュートリアルでは、if
、if-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
出力:
ノート:
- 括弧の間にスペースを入れないでください。
- 文字列または変数にスペースまたは特殊文字が含まれる場合は、それらを二重引用符で囲みます。
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
を使用する必要があります。
そのため、バッチ ファイル内の文字列を比較するさまざまな方法について説明しました。 文字列を比較する以外に、これらの条件付きコマンドを使用して、テキスト ファイルまたはログ ファイルから指定された値またはテキストを検索することもできます。