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


20

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

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


自分で設定を解除する必要があると思います。
ジーナ

回答:


28

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

現在のcmdシェルから:

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

set ENVVAR=abc && dir & set ENVVAR=

バッチファイルから:

あなたは使用することができるsetlocalendlocal

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

cmdシェルを使用します。

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

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

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

参考文献

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

別のオプションは、別のcmdプロセスを起動してそこに設定することです。例えば、cmd /C "set ENVVAR=abc && dir"。親プロセスには影響しないため、終了時に効果的に「クリア」されます。
jpmc26

@ jpmc26いいですね。ありがとう。回答に追加されました。
DavidPostill

コマンドが失敗した場合、その最初のメソッドは変数をクリアしません。
誰も

@AndrewMedicoありがとう。いい視点ね。回答が修正されました。
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.