2011-07-26 5 views
122

基本的に、私は私のコントロールパネルを通過し、パス変数を変更することができます。しかし、一時的なパスが含まれているバッチプログラミングの方法があるのだろうか?この方法では、バッチファイルの実行中にのみ使用されます。私は人々が私のバッチファイルを使用するためにパス変数を変更して変更することを望んでいません。 SETとただ、他の環境変数のようなコマンドプロンプト - 実行中のバッチファイルに対してのみ設定パスを追加する方法?

答えて

205

、:

SET PATH=%PATH%;c:\whatever\else 

あなたが最初に建てられた小さな安全確認をしたい場合は、新しいパスが最初に存在するかどうかを確認します。

IF EXIST c:\whatever\else SET PATH=%PATH%;c:\whatever\else 

あなたはそれが、そのバッチファイルにローカルであるsetlocalを使用する場合:

setlocal 
set PATH=... 
set OTHERTHING=... 

@REM Rest of your script 

setlocal/endlocalのドキュメントをよく読んで、そのサイトの他の参考文献を参照してください。Functionsも非常に面白く、構文はトリッキーです。

Syntaxページでは、基本を学ぶことができます。

+0

そのバッチセッションのみであるか、それとも永続的なのでしょうか? – michael

+3

バッチファイルに 'setlocal'を追加すると、パスはファイル内にしか表示されません – jeb

+0

hw" setlocal "を追加しますか?それは "SET"の代わりですか? – michael

16

そうですが、それは永久にそれを変更しませんが、あなたは永久にそれを変更するためにしたい場合は、単に現在のコマンドプロンプトのために、あなたはたとえばこれを使用する必要があります。

setx ENV_VAR_NAME "DESIRED_PATH" /m 

これは恒久的に変更されますはい、別のバッチスクリプトで上書きすることができます。

+0

'/ m'は' setx'の後にある必要がありますか? – suzanshakya

+0

私にとっても同じように動作しますが、このWin Batch ScriptingはMSからの未完成のビジネスです。同じシステムを持つすべてのラップトップを持っている私の会社では、PATH設定のための汎用スクリプトはありません。私たちは2つまたは3つを管理していますので、何でもうまくいきます:) – dumbak

+0

ありがとうございます。 Windows Server 2012では、最後に '/ m'を置くと、現在のユーザーのために最後に/ mを付けてDESIRED_PATHを追加しました。 – suzanshakya

10

重要なディテールがあります:

set PATH="C:\linutils;C:\wingit\bin;%PATH%" 

set PATH=C:\linutils;C:\wingit\bin;%PATH% 

作品ながら、動作しません。違いは引用符です!

+1

最初のバージョンはPowerShellで動作します –

関連する問題