Batファイルを使用して、Windows 7でPATH環境変数を設定しようとしています。ただし、機能していないようです。
私はこのWindowsコマンドを使用しています:
set PATH=%cd%;%path%
pause
ただし、このcmdインスタンスに対してのみ有効であるように見えます。最初にPATHを設定し、次にそのフォルダー内のライブラリーを見つける必要があるプログラムを実行するので、永続的にしたいです。
Setではなくsetx.exeを使用します。
setx PATH "%cd%;%path%;"
pause
これにより、将来のすべてのcmdインスタンスのパスが設定されますが、現在のcmdインスタンスではnotに設定されることに注意してください。必要な場合は、元のsetコマンドも実行してください。
更新:2番目のパラメーターにスペースが含まれる場合は引用符で囲む必要があります(%path%には常にあります)。 %path%の最後の文字がバックスラッシュである場合、末尾の引用符がエスケープされ、最後のパスエントリが機能しなくなることに注意してください。引用符の前にセミコロンを追加することにより、これを回避します。
「;;;;;;」の危険を冒したくない場合繰り返し実行した後、パスの最後で、代わりに設定する前に%path%変数から後続のバックスラッシュを取り除きます。これにより、正しく機能します。
バッチファイルで行う場合は、regコマンドを使用して、HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentキーのレジストリのパス値を変更します。
何かのようなもの:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;c:\newpath"
%path%変数のパスがシステムパスと一致することを確認します。
Wizlbが指摘したように、
setx PATH "%cd%;%path%;" -m
ローカルenvをシステムenvにコピーし、-mなしでシステムenvをユーザーenvにコピーします。どちらも望ましくありません。レジストリの一部(システムまたはユーザー、以下の例ではシステム)のみを正確に編集するには、これを行う必要があります。
for /F "tokens=2* delims= " %%f IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path ^| findstr /i path') do set OLD_SYSTEM_PATH=%%g
setx.exe PATH "%OLD_SYSTEM_PATH%;%OTHER_STUFF%;" -m
ソリューションの功績は http://www.robvanderwoude.com/ntregistry.php にあります
これを適切に行うには、単純なバッチファイルを超える必要があると思います。 MSDNドキュメント 状態:
システム環境変数をプログラムで追加または変更するには、それらをHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environmentレジストリキーに追加してから、
WM_SETTINGCHANGE
lParamが文字列「Environment」に設定されたメッセージ。これにより、シェルなどのアプリケーションが更新を取得できます。
まず第一に、UAC昇格プロンプトがなければそのキーに書き込むことができません。適切なマニフェストを実行可能ファイルに追加することで、最適な配置ができます。次に、ブロードキャストWM_SETTINGCHANGE
はバッチファイルから単純ではありません。
あなたの立場で、私は仕事をするための短くてシンプルなコンソールアプリを書きます。
単純な(より良い)ソリューションは、PathMgr.cmdを使用することです
Pathmgr_1.0.2.Zip in https://gallery.technet.Microsoft.com/Batch-Script-To-Manage-7d0ef21e
バッチファイルと同じフォルダーにpathmgr.cmdを解凍して配置し、バッチファイルに次の2行を記述します。
call pathmgr.cmd /del %cd% /y
call pathmgr.cmd /add %cd% /y
この意志:
1)ユーザー変数PATHを更新するだけ、2)システムPATHを複数回含めない
バッチファイルを複数回実行することもできますが、PATHには現在のパスのみが含まれます。
「Zip_PROGRAM」というシステム環境変数を作成し、パス「reg add C:\ Program Files\7-Zip\7z.exe」で実行可能ファイルを指すようにするとします。
DOSプロンプトで以下を実行します。
手順1:次のコードを実行しますreg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"/v Zip_PROGRAM/t REG_SZ/d "C:\ Program Files\7-Zip\7z.exe"/f
ステップ2:ログオフしてログイン
ステップ3:DOSプロンプトを開き、「set z」を実行すると、システム環境変数の更新が表示されるはずです。
このコマンドを使用しますsetx PATH "%PATH%;%MVN_HOME%\ bin \"
とにかく、使用する必要がある現在のセッションでは設定されません
set PATH = "%PATH%;%MVN_HOME%\ bin \"