2015年05月24日

バッチファイル(batファイル)で、空の変数の判定処理

空の変数(=空変数、初期化された変数)かどうかの判定する際には、
変数を””で囲んで置かないと、期待どうりの動作をしてくれない。
また、遅延環境変数の場合には、同じく、変数を””で囲んでおかないと、期待どうりの判定をしてくれない。

参考HP:
http://blog.livedoor.jp/akf0/archives/51619076.html


●例1>変数を””で囲まない場合。

<スクリプト内容>
@echo off
set a=
echo %a%
if %a% == "" (
echo 変数aは空です
) else (
echo 変数aは空ではないです
)
pause

<実行結果>
ECHO は <OFF> です。
( の使い方が誤っています。 ←空の変数が期待通りに処理されず、結果が異常となる。
続行するには何かキーを押してください . . .


●例2>変数を””で囲んだ場合。

<スクリプト内容>
@echo off
set a=
echo %a%
if "%a%" == "" (
echo 変数aは空です
) else (
echo 変数aは空ではないです
)
pause

<実行結果>
ECHO は <OFF> です。
変数aは空です
続行するには何かキーを押してください . . .


●例3>変数を””で囲まない場合。 (遅延環境変数の場合)

<スクリプト内容>
@echo off
setlocal enabledelayedexpansion
set a=
echo !a!
if !a! == "" (
echo 変数aは空です
) else (
echo 変数aは空ではないです
)
pause

<実行結果>
ECHO は <OFF> です。
変数aは空ではないです  ←結果がおかしい。
続行するには何かキーを押してください . . .


●例4>変数を””で囲んだ場合。 (遅延環境変数の場合)

<スクリプト内容>
@echo off
setlocal enabledelayedexpansion
set a=
echo !a!
if "!a!" == "" (
echo 変数aは空です
) else (
echo 変数aは空ではないです
)
pause

<実行結果>
ECHO は <OFF> です。
変数aは空です
続行するには何かキーを押してください . . .





この記事へのトラックバックURL

コメントする

名前
 
  絵文字