set /p の空白付加の謎

id:otn:20041216 で、「(echo)の空白付加の謎」というのを書いたが、

set <NUL /p=ABC|

とset /p でもパイプするとABCの後に空白が1つ付いてしまう。

set <NUL /p="ABC"|

と、表示文字列を " " で囲むと空白は付加されない。

前回のechoを括弧で囲んだ時を思い出して、

(set <NUL /p=ABC)|

と括弧で囲むと予想通りさらに1つ空白が追加され、合計2つの空白が付く。ところが、

(set <NUL /p="ABC")|

だと空白が1つ付くだろうと思うと今度は空白は付かない。謎だ。

パイプじゃなくてリダイレクトでファイルに書くとどの場合でも空白は付かない。