回答:
他の環境変数と同じように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
そのサイトの他のリファレンスを確認してください。関数も非常に興味深く、構文は複雑です。
構文ページでは、基本から始める必要があります。
SET
。これは、スクリプトを実行する前に知っておく必要があることです。
SETLOCAL
ても、せいぜい、その個々のコマンドプロンプトセッションのみが対象になります。これを複数のバッチファイルから実行し、を使用しているEXIT /B %N%
場合、SETLOCAL
基本的には、スクリプトが終了したときに変更をダンプするだけです。:-/
重要な詳細があります:
set PATH="C:\linutils;C:\wingit\bin;%PATH%"
動作しませんが、
set PATH=C:\linutils;C:\wingit\bin;%PATH%
動作します。違いは引用です!
UPDはvenimusによるコメントも参照
SET "PATH=...%PATH%"
、パスにスペースが存在すると、エラーや誤動作の原因になります。このような引用符で囲むと、それらは含まれませんが、変数が適切に設定されます。同じことが他の環境変数でも機能します。
そうですが、永久に変更するのではなく、現在のコマンドプロンプトに対してのみ、永久に変更する場合は、たとえば次のように使用する必要があります。
setx ENV_VAR_NAME "DESIRED_PATH" /m
これにより永続的に変更されます。そうすれば、別のバッチスクリプトで上書きできます。
/m
後にする必要がありsetx
ますか?
/m
、最後に置くと、DESIRED_PATH
現在のユーザーのみの最後に/ mが追加されました。
echo %path%
と、現在読み込まれているパスが取得されます。ユーザー環境変数とシステム環境変数を互いに区別する必要があります。次に、それらを手動で正しい場所に適用できます。
setlocal
バッチファイルに追加した場合、パスはファイルでのみ表示されます