MS-DOS BAT batchファイルその3
rem test.bat if "%1" == "" ( echo invalid (too few argument) echo 終了します exit ) echo "ok"
で、
> test.bat invalid (too few argument 終了します >
これはよし(1点良くないが)。
で、
> test.bat hoge 終了します >
…終了してしまう。一応こちらの意図としては、第一引数が入力されるとokとプリントしてほしいのに。
この現象は、batファイルの、echoコマンドに続く文字列の扱いに原因がある。つまるところ、最初のechoの引数である、 invalid (too few argument) の終りの')'でif文が閉じてしまうのである。意味わかんねぇ。明確に文字列であることを示そうと思って
echo "invalid (too few argument)"
とすると、一緒に"も出力しやがる。
結局()をエスケープしようとする場合、下記のようにすればいいようだ。
rem test2.bat if "%1" == "" ( echo invalid ^(too few argument^) echo 終了します exit ) echo "ok"
こんなもん知るか。