• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチでのレジストリPath環境変数方法)

バッチでのレジストリPath環境変数方法

このQ&Aのポイント
  • バッチでのレジストリのPath環境変数を変更する方法について教えてください。
  • バッチ処理でreg queryを使用してPath設定を検索し、指定されたPath設定があればPath環境変数を変更します。
  • findstrコマンドの使用方法やオプションについて試行錯誤していますがうまくいっていません。reg addへの飛び方の記述を教えていただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Topjackさんの > ≪バッチ内容(例)≫ がどの程度正確に記載してくれたのかで変わるのですが、上記ではIF文の使い方が間違っていると思います。 if errorlevel 1 goto tran1 ERRORLEVELは変数ですので展開する必要があります。 誤 errorlevel 正 %errorlevel% IF文は条件分岐ですので式が必要になります...ですので %errorlevel% == 1 とする必要があります。 IF文が働かないのでこの行がスルーされて「goto tran2」が処理されているように思います。 まずはもう一度構文を見直されてはいかがでしょうか。 レジストリ関係ですので動確を得たものでお答えはできませんが、質問記載用に書いたとき間違えて実際のスクリプトが正ならばすみません、わからないです。

Topjack
質問者

補足

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 色々、試行錯誤して試さないとだめですね。 目的の動きは、できたので終了いたします。 ありがとうございました。

関連するQ&A