windows のバッチファイル内でのforの変数名で%%を2つ使う件

バッチファイル内で for文を使う場合、変数名には%%とパーセントを2つつける。

for %%a in (*.gz) do echo %%a

しかし、これをコマンドプロンプトで直接打つと、以下のようにエラーとなる。

%%a の使い方が誤っています。

コマンドプロンプトで直接打つ場合はパーセントを一つにする。

for %a in (*.gz) do echo %a

よく分からんが、バッチファイルの場合は%をエスケープする必要があるということ?%一つだと無視される?