set コマンドが & / && の直後のコマンドに影響しないのはなぜですか?

set コマンドが & / && の直後のコマンドに影響しないのはなぜですか?

システム変数を使用するコマンドが多数あり、それらは次のような 1 行のコマンドです。

set test="blah" && echo %test%

しかし、set コマンドの変数は、同じ行のコマンドに対しては「設定」されていないことに気付きました。2 番目のコマンドを再実行すると、更新された変数を読み取ることができます。& または && のどちらを使用しても効果は同じです。この動作は、バッチ ファイルとコマンド プロンプトに単に入力した場合の両方で発生します。

またはsetに続くステートメントに影響を与えるコマンドを取得するにはどうすればよいですか?&&&

答え1

これは、コマンド ライン全体が一度に評価され、コマンドを実行する前に変数がtest解決されるためですset

簡単な修正方法としては、バッチ ファイル内の別々の行にコマンドを配置して実行することが考えられます。

関連情報