スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

バッチファイルのif文がやっぱり腐っている話 

聞いて欲しい。
下記のバッチファイルは期待した"_2_"を出力せず、"__"を出力する。

set FOO=0
set BAZ=
if "%FOO%"=="0" ( set VAR=1 )
if "%VAR%"=="1" ( set BAZ=2 )
echo _%BAZ%_


何が悪いのか。この行

if "%FOO%"=="0" ( set VAR=1 )


の最後の')'の前のスペースがいけないのだ。なんと%VAR%の値は "1 "(1の後ろにスペースが入っている) になっている。
バッチファイルにはまともなif文も存在していないんだよ、勘弁してくれ!
仕方がないのでより安全な対策として、以下のように書くことにする。

if "%FOO%"=="0" (
set VAR=1
)


こう書けばごく当たり前に動作する。

set FOO=0
set BAZ=
if "%FOO%"=="0" (
set VAR=1
)
if "%VAR%"=="1" (
set BAZ=2
)
echo _%BAZ%_

なんでこんなMSDOSもさにあらんというようなチープ極まりない制限がメモリ4GBytesとか乗せているPC用のOSで残っているんだよ。本当、バッチファイルはどうかしている。

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://haginov.blog35.fc2.com/tb.php/275-2fce6ea5

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。