やりたいこと検索

バッチファイルで文字列を比較する

 

こんなことを知りたい人へ向けて書いています

  • Windowsバッチファイルで文字列を比較する方法を知りたい人
  • 「if」コマンドの色々な機能について詳しく知りたい人

 

目次

その他の関連しそうな記事

 

バッチファイルで文字列を比較する

バッチファイルで文字列を比較するには、比較演算子の「==」を使用します。使用方法は「if」コマンドを用いて、

のようになります。例えば、変数「s1」と「s2」の中の文字列を比較するバッチファイル(compare_strings_yahoo.bat)は以下のように書けます。

このバッチファイルを実行すると以下の図のようになります。

今の場合、変数「s1」と「s2」に入っている文字列は同じですので、if文の条件判定が「真」のときに実行される「echo 二つの変数には同じ文字列が入っています。」によってコマンドプロンプト画面にメッセージが表示されました。

次に、上記のバッチファイルの「s2」を文字列「google」に変えて実行してみましょう(compare_strings_google.bat)。

すると、実行結果は以下のように変わります。

今度は、if文の条件判定が「偽」のときの実行結果となりました。期待通りの動作ですね。

 

二つの文字列が等しくないときに「真」とする

次は逆に、二つの文字列が等しくないときに、if文の条件判定が「真」になるようにします。それには「if」の後に、「not」をつけるだけです。バッチファイル「compare_strings_google.bat」を以下のように書き直しましょう。バッチファイル名は「compare_strings_google_not.bat」とします。

8行目の「if」の後に、「not」を追加し、「echo」コマンドの出力メッセージ文を少し書き換えただけです。以下、このバッチファイルの実行結果です。

今度は変数「s1」と「s2」の文字列が異なるときに、条件判定は「真」となり「二つの変数には同じ文字列が入っていません。」と出力されています。

 

大文字と小文字を区別しない

通常、「==」で条件判定した場合、大文字と小文字を区別します。例として、以下のバッチファイル(compare_strings_yahoo_capital.bat)を実行してみましょう。

変数「s1」は小文字の「yahoo」に対して、変数「s2」には大文字の「YAHOO」を代入しています。これを実行すると、以下のようになります。

「yahoo」と「YAHOO」は異なる文字列と判断されました。

つぎに、「if」文にオプション「/i」を付けて実行します(compare_strings_yahoo_capital_i.bat)。

以下は実行結果です。

今度は文字列「yahoo」と「YAHOO」は同じ文字列と判定されました。このようにオプション「/i」は大文字と小文字を区別たくない場合に使用します。

 

空白(スペース)を含む文字列を比較する場合

空白(スペース)を含む文字列を比較する場合には注意が必要です。例として、以下のバッチファイルを作成しました(compare_strings_space_error.bat)。

4,5行目では、「set」コマンドにより、変数「s1」と「s2」には「yahoo mail」と「google mail」というように空白を含む文字列を代入しています。6,7行目では変数「s1」と「s2」の中身をコマンドプロンプト画面に出力して確認を行います。

if文の部分は今までと同様です。これを実行すると、以下のようになります。

10行目のif文で「mail==google の使い方が誤っています。」というエラーが発生してしまいました。これは、「s1」や「s2」に空白が含まれている文字列「yahoo mail」及び「google mail」が入っているため、10行目が、

if yahoo mail==google mail (

として、実行されようとしたためです。これだとif文の文法的に正しくありません。

これを回避するためには、if文の比較する文字列、ここでは「%s1%」と「%2%」をダブルクォーテーション「”」で囲います。以下のようになります。

10行目でのif文の変数に「%」をつけて修正しました。実行結果は以下の通りです。

今度はエラーなく正常に実行されました。

 

 文字列ではなく数値を比較するときは使用する比較演算子に注意

ここでは、「if」コマンドを使い文字列に比較について詳しく見てきました。

Windowsバッチファイルでは文字列のほかに数値も扱うことできます。その数値についても「if」コマンドを使った比較が可能なのですが、その場合は比較演算子に注意が必要です。

文字列の場合は比較演算子に「==」を使用しました。しかし、数値は「等しい(==)」こと以外にも「片方がもう片方より大きい」や「片方がもう片方より小さい」ことなども条件判断しなければいけません。

数値の比較については「バッチファイルで数値を比較する -やりたいことから検索-」で詳しく解説していますので、そちらを参考にしてください。

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメント

  1. 匿名 より:

    実行結果あってますか?

    1. jj-blues より:

      コメントありがとうございます。
      どの実行結果か教えていただけますでしょうか?

  2. より:

    二つの文字列を比較②です

コメントを残す