【バッチファイル】絶対に正しく変数を set してるはずなのに echo すると "ECHO は OFF です" と言われる時
「正しく set されていないから」、というのが結論です。
私が陥ったパターンはこれ
変数の直後に半角スペースを入れていた
Python やら PHP やら VBA を使う機会はありますが、バッチファイルを作る機会はほぼゼロになっていました。
普段、プログラミングの際に変数名の後ろのイコール(=)の前後に半角スペースを入れるクセがあります。 バッチファイル内でそれをやってしまった、というのがオチです。↓ こんな感じにしててドハマり。
@echo off
set test = hensu-dayo
echo %test%
set する時、変数名の後ろに半角スペースがあると、変数が空っぽの状態になるらしく、それを echo しようとすると表示できるものがないから "ECHO は <OFF> です" と言われる模様。
echo する変数名はあっているし、入れている内容も問題ないし、なぜ、、、と
悩むこと30分。
変数名とイコールの間の半角スペースのせいで正しく set されていなかったという。
過去に作ったバッチファイルと見比べていてこの罠のことを思い出しました。
例
下図の赤下線のところに半角スペースが入っています
バッチファイル内容は ↓ です
@echo off
set test01 = test01-dayo
set test02=test02-dayo
echo %test01%
echo %test02%
これを実行すると、下図の結果に。
見事に %test01% の ECHO をしくじっていますね。
変数名はあってるのに正しく ECHO できない場合は、イコールの前に半角スペースを入れちゃっていないか確認してみましょう。
※ ECHO できない → set できていない → あやしいのは自分
半角スペース以外の要因
半角スペースは使っていないのに ECHO できない(正しく set できない)時は他の理由が考えられます。
↓ こういった情報を参考に変数の set 方法や入れようとしている内容を確認するのがいいですね。