^ によるquoteについて
昨日の記事において、
call echo %%%A%%%
と書いたが、この時、^ で % をquote出来るのでは?と思って、
call echo ^%%A%^%
としてみた(sh だと、eval echo \$$A に相当)ところ、表示されるのは、A だけである。
どうも、^ によるquote処理より、%による展開のほうが先に行われるためのようだ。% による展開後、call echo ^%A となり(注1)、^ によるquote処理でこれが call echo %A となり、さらに call によるeval処理で echo A となり、これが実行されて A が表示される。
(注1: %% が % になり、%^% が空になる)
^ より % が早いことは、下記で行が継続することでも確認できる。
set A=^^ echo aaa%A% bbb