コマンドラインで、%のエスケープ方法CommentsAdd Star

バッチファイルでは、%は、%%でエスケープされる。
%?%は、環境変数がなくても置換される。
もし、環境変数がなければ、空と置換されて、%?%が消える。

コマンドプロンプトでは、簡単なエスケープ方法はない。
環境変数がなければ置換されずに、そのまま残る。
これを利用してエスケープする。

コマンドプロンプトで、%をエスケープするには、%の直後に^や継続行を入れる。

ECHO %^CD%

ECHO %^(改行)
More ? CD%

は、

%CD%

と出る。

前者は^CDという環境変数がないことを利用している。当然、

SET "^CD=bbb"

のようにして、^CDという環境変数があると置換される。

引用符("?")内では、%はエスケープされないが、^はエスケープされることに注意。

ECHO "%^CD%"

は、

"%^CD%"

と出る。

ただし、引用符の前に^を付けると、^"?^"内の^はエスケープされません。
^だけでなく、&|)などもエスケープされません。

ECHO ^"%^CD%"

は、

"%CD%"

と出ます。