web-dev-qa-db-ja.com

Windowsで単一のコマンドの環境変数をどのように設定しますか?

UnixのENVVAR=abc commandのように、Windowsの単一のコマンドに環境変数を設定する方法はありますか?

Windowsのsetコマンドで設定された変数は、次のコマンドでも残っているようですが、これは私が望んでいることではありません。

22
谷口昂平

単一のコマンドに環境変数を設定する方法はありますか?

現在のcmdシェルから:

変数を自分でクリアする必要があります。

set ENVVAR=abc && dir & set ENVVAR=

バッチファイルから:

setlocalおよびendlocalを使用できます。

@echo off
setlocal 
  set ENVVAR=abc && dir
endlocal

子を使用cmdシェル:

cmd /cを使用して子シェルを作成できます。

変数は子シェルで設定され、親シェルには影響しません(コメントで jpmc26 によって指摘されています)。

cmd /C "set ENVVAR=abc && dir"

参考文献

  • Windows CMDコマンドラインのA-Zインデックス -Windows cmdラインに関連するすべてのものの優れたリファレンス。
  • cmd -新しいCMDシェルを起動し、(オプションで)コマンド/実行可能プログラムを実行します。
  • endlocal -バッチファイル内の環境変更のローカライズを終了します。あるバッチファイルから別のバッチファイルに変数を渡します。
  • リダイレクト -リダイレクト演算子。
  • set -CMD環境変数を表示、設定、または削除します。 SETで行った変更は、現在のCMDセッションの間のみ保持されます。
  • setlocal -バッチファイル内の環境変数の可視性を制御するオプションを設定します。
29
DavidPostill