2011-08-17 12 views
6

いくつかのアドレスを追加することによってPATH変数を変更するバッチファイルがあります。ユーザーがログオフすると、PATHは元の値(バッチファイルが実行される前)にリセットされます。この動作は問題ありません。Windows CMD - パス変数をバッチファイルからリセットしますか?

しかし、バッチファイルが複数回実行されている場合、同じ値が再度追加され、各バッチ実行後に長くなる余分に長い冗長なPATH変数になります。

ユーザーがログオンしたときに値を前に付ける前に、変数をリセットする必要があります。私は解決策は、一時的なファイルに元の値を書き込み、それを読むことですが、それを行うより良い方法はありますか?

答えて

6

ではなく一時ファイルに、元の値を書き込むには、別の環境変数にそれを書くことができます:

if not defined ORIGINAL-PATH set ORIGINAL-PATH=%PATH% 
set PATH=c:\extra\stuff;%ORIGINAL-PATH% 

が、明示的にしたい文字列が既にかPATHにあるかどうかを確認する方が良いだろうこのように:

echo %PATH% | findstr /c:"c:\extra\stuff;" > nul || set PATH=c:\extra\stuff;%PATH% 
+0

これは実際に私がやったことです。ありがとう! – Ben

+0

これは、 "余分なもの"を壊してしまった場合の利点が追加されています。修正することができます。私が最初にやったとき、後ろの "\"を忘れてしまった。シンプルで効果的なチップをありがとう! – granadaCoder

6

@SETLOCALをバッチファイルの先頭に置きます。

環境に加えられた変更は、バッチファイルが終了すると復元されます。

詳細については、setlocal /?を実行してください。

1

私は同じような問題の解決策を探していました。最後に私はからダウンロードしたpathmgr.cmd使用して終了:ユーザーのPATHをきれいにするためにそれを使用するには

http://gallery.technet.microsoft.com/Batch-Script-To-Manage-7d0ef21e

を、以下のオプションは、コマンドラインから使用することができます。

pathmgr.cmd/clean/user/p/y

他にも多くの便利なオプションがあります。

関連する問題