[ホーム] - [バッチファイル サンプル一覧] - ["ECHO は <OFF> です。" と表示される原因と対処]

"ECHO は <OFF> です。" と表示される原因と対処 | Windows バッチファイル






問題


Windows のバッチで変数の内容を表示させようとすると以下のエラーが発生する場合があります。

"ECHO は <OFF> です。"

これは説明が難しいのですが、Windows のバッチの特徴です。 for 文や if文の中で変数を扱う場合は注意が必要です。
普通の使い方をすると変数が初期化されてしまいうまく参照できません。
このような場合は「遅延環境変数」機能を使用します。こういうものと思ってください。

遅延環境変数を使用すると変数が使用できるようになります。ただし変数は %hensu% ではなく !hensu! の様な参照方法となります。
もし遅延環境変数で変数が展開されない場合はこのように ! で参照していることを確認してください。

以下はディレクトリ内のファイルの一覧を表示するサンプルコードです。

失敗例


以下の例ではfilename変数が "ECHO は <OFF> です。" と表示されてしまいます。


@echo off

for %%F in (*) do (

set filename= %%F
echo %filename%

)





解決方法


以下の通りsetlocal ENABLEDELAYEDEXPANSION で正常に変数が表示されます。


@echo off

rem 遅延環境変数を設定
setlocal ENABLEDELAYEDEXPANSION

for %%F in (*) do (

set filename= %%F
echo !filename!

)
endlocal




参考コード


参考まで以下のとおり変数に格納せず直接表示する場合は"遅延環境変数" は不要となります。混乱しそうですね。


@echo off

rem 遅延環境変数を設定

for %%F in (*) do (

echo %%F

)












本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)

[ホーム] - [バッチファイル サンプル一覧]