◆ set のあとに && でつないでコマンド実行するときに注意

環境変数を指定してコマンドを実行したいなーと思って こんな感じのことをしてみました

set FOO=BAR && node

すると

C:\Users\user1>set FOO=BAR && node
Welcome to Node.js v12.6.0.
Type ".help" for more information.
> process.env.FOO
'BAR '
>

'BAR '

なんか空白が入ってます!

そこ取り除いてくれないんですね……
これまでこういう使い方したことあったと思うのですが 今になってこんな仕様だったのを知りました

PowerShell だと

$env:FOO="BAR"; node

のように文字列はクオートが必要なので この問題は起きないです

それにセミコロンで区切るのでスペースをあけないです
コマンドプロンプトの && は成功確認するのに対して PowerShell の ; は成功確認しません
環境変数指定で失敗はなさそうですし コマンドプロンプトも成功確認しないようにしてもいいのですが そうしても使う記号は & が 1 つです
結局スペースをあけたくなります

追記

もしかして普通の引数も?と思って試してみました

[a.js]
console.log(`"${process.argv[2]}"`)
node a.js foo && echo 1

これを実行して foo の後にスペースがあるか確認します
結果は

"foo"

入ってませんでした
環境変数のみの仕様みたいですね