※ ChatGPTを利用し、要約された質問です(原文:バッチでのレジストリPath環境変数方法)
バッチでのレジストリPath環境変数方法
このQ&Aのポイント
バッチでのレジストリのPath環境変数を変更する方法について教えてください。
バッチ処理でreg queryを使用してPath設定を検索し、指定されたPath設定があればPath環境変数を変更します。
findstrコマンドの使用方法やオプションについて試行錯誤していますがうまくいっていません。reg addへの飛び方の記述を教えていただけますか?
バッチでのレジストリPath環境変数方法
お世話になっております。
レジストリのPath環境変数をバッチで変更しようとています。
バッチ処理の動きとしては、下記の処理をするバッチを
作りたいのですが、上手くいきません。
≪処理≫
1、reg queryで、指定されたPath設定を検索
2、if errorlevel ~ 構文で
if errorlevel 1 goto tran1
goto tran2
2-1、指定されたPath設定がなければ、3へ。
2-2、指定されたPath設定があれば、 4へ。
(指定されたPath環境変数は設定済み)
3、reg addで、Path環境変数を変更する
4、次の処理実施
(指定されたPath環境変数は設定済)
具体的な処理内容は、下記のような記述をしてます。
≪バッチ内容(例)≫
@echo off
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path | findstr /i "C:\Program Files\navnt"
if errorlevel 1 goto tran1
goto tran2
:tran1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t REG_EXPAND_SZ /d "%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\navnt" /f
:tran2
echo 次の処理へ
しかし、実行すると、全てTran2へ行く処理になってしまい、Tran1への処理になりません。
※reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path | findstr /i "C:\Program Files\navnt"
| findstr /i "C:\Program Files\navnt" 箇所の、findstr が上手く機能してないと思ってます。
オプションもいくつか追加して試しましたが、上手くいきませんでした。
(試) findstr の /c:文字列 を追加 ⇒ 結果、NG
~ | findstr /i /c:"C:\Program Files\navnt"
findstrの記述が原因と思いますが、
●tran1の reg addへ飛ぶ処理の記述をご教授頂けますか?
宜しくお願い致します。
補足
purple_cubさん お世話になっております。 ありがとうございます。 ご返信が大変遅れまして、申し訳ありません。 ERRORLEVELについて、ご指摘の点を試してみました。 下記、IF構文を使いました。 if %errorlevel% GEQ 1 (goto tran1) ELSE goto tran2 しかし、やはり、正しく動きませんでした。 他の箇所の構文がちがっているかもしれません。 少し、別の動きを考えました。 Path環境変数をログに落として、ログから検索して変更する動きしました。結果、何とかできました。 set tran=C:\temp\tran.log set navnt=C:\Program Files\navnt %path%>%tran% findstr /i /c:"%navnt%" %tran% if %errorlevel% GEQ 1 (goto tran1) ELSE goto tran2 :tran1 for /f "delims=," %%i in (C:\temp\tran.log) do set ChegPath=%%i set NewChag=%ChegPath%;C:\Program Files\navnt echo %NewChag% reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t REG_EXPAND_SZ /d "%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\navnt" /f 色々、試行錯誤して試さないとだめですね。 目的の動きは、できたので終了いたします。 ありがとうございました。