コマンドプロンプト-実行中のバッチファイルに対してのみセットパスを追加する方法


187

基本的に、コントロールパネルを使用してパス変数を変更できることはわかっています。しかし、一時的なパスが含まれているバッチプログラミングを実行する方法があるかどうか疑問に思いますか?その方法は、そのバッチファイルの実行中にのみ使用されます。バッチファイルを使用するためだけにパス変数を変更してもらいたくありません。

回答:


318

他の環境変数と同じようにSET

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そのサイトの他のリファレンスを確認してください。関数も非常に興味深く、構文は複雑です。

構文ページでは、基本から始める必要があります。


3
setlocalバッチファイルに追加した場合、パスはファイルでのみ表示されます
jeb

hw「setlocal」を追加しますか?「SET」の代わりですか?
マイケル

@micheal:回答をリンクで更新しました。cmdスクリプトに関するいくつかのドキュメント/例/チュートリアルを読んでくださいSET。これは、スクリプトを実行する前に知っておく必要があることです。
マット

2
ライフセーバー。再起動できないサーバーにEVを追加する必要がありました。これにより、再起動をスケジュールしなくても必要なことを実行できます。
dav_i 2013

8
それがなくSETLOCALても、せいぜい、その個々のコマンドプロンプトセッションのみが対象になります。これを複数のバッチファイルから実行し、を使用しているEXIT /B %N%場合、SETLOCAL基本的には、スクリプトが終了したときに変更をダンプするだけです。:-/
BrainSlugs83 14

21

重要な詳細があります:

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

動作しませんが、

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

動作します。違いは引用です!

UPDはvenimusによるコメントも参照


3
実際SET "PATH=...%PATH%"、パスにスペースが存在すると、エラーや誤動作の原因になります。このような引用符で囲むと、それらは含まれませんが、変数が適切に設定されます。同じことが他の環境変数でも機能します。
venimus

20

そうですが、永久に変更するのではなく、現在のコマンドプロンプトに対してのみ、永久に変更する場合は、たとえば次のように使用する必要があります。

setx ENV_VAR_NAME "DESIRED_PATH" /m

これにより永続的に変更されます。そうすれば、別のバッチスクリプトで上書きできます。


多分/m後にする必要がありsetxますか?
スザンシャキャ2014

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

更新していただきありがとうございます。Windows Server 2012では/m、最後に置くと、DESIRED_PATH現在のユーザーのみの最後に/ mが追加されました。
スザンシャキャ2014年

11
注意の言葉。パスにsetxを使用し、さらに追加しようとして、文字列が> 1024である場合、結果(私の環境PATH)が完全に切り捨てられていることを発見しました。(変更前にECHOで出力した%PATH%をコピーして、環境変数ウィンドウツールを使用して元に戻すことができました。)
Andreas Jansson

注意!このコマンドは、システム環境変数を直接上書きします!それらを削除して修正しようとしました。また、この間違いをした人のために:コンピュータを再起動しないでください。書き込むecho %path%と、現在読み込まれているパスが取得されます。ユーザー環境変数とシステム環境変数を互いに区別する必要があります。次に、それらを手動で正しい場所に適用できます。
Alper
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.