• ベストアンサー

Win2000のシステム環境変数Path

バッチファイル上で reg.exeで新たにパスを追加したいんですが、 overwrite(Y/N?)と聞かれて止まります。 止まらずにいくには、どう書いたら良いでしょうか? 教えて下さい。 [コマンド] reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %Path%;任意のパス /f

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

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.2

>元々Pathに設定されていた""で囲んであったパスが追加後には解除されるという事態に・・・。 > >パスに半角スペースが入ってるんでちょっと困りますね。。 /fオプションが利かなかった原因&""で囲んであったパスが追加後解除される原因は、%Path%がコマンドライン上で展開された時に、""で囲まれた部分の最初の"以降が、regコマンドのパラメータとして、正常に解釈されなくなることにあると思われます。(正常に解釈されていれば、/fオプションが利くはず) 環境変数Pathは、半角スペースを含むパスでも、""で囲まずに指定することが出来ますから(というより、""で囲まれていると、返って不具合が起きそう)、思い切って""を削除してしまえば良いと思います。 (↓が私のPathの設定ですが、見ての通り、""で囲まれてはいませんし、"C:\Program Files\Executive Software\Diskeeper"フォルダにある、"diskeeper.exe"をフルパスで指定しなくても起動できますから) %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Program Files\Executive Software\Diskeeper ただし、regコマンドのパラメータに半角スペースを含む文字列を指定する時には、""で囲む必要があります。(""で囲まないと、パラメータが多すぎるというエラーメッセージが表示されますし、Pathに最初から""が含まれていると、それ以降が正常に解釈されなくなります。) reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%Path%;C:\Program Files" /f

hayabun
質問者

お礼

返事が遅くなりました。 非常に分かりやすい表現で有難うございます! とてもよく理解できました。 Pathに""が付いていたのは、Sy○antecのソフトだったんですが・・・、どうしたもんでしょうね。。。 なんとか頑張ってみます。

その他の回答 (1)

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

/fオプション付けても、上書き確認が出ちゃうってことですョね? /fオプションの位置を変えてみるか、 "y"一文字を書き込んだテキストファイル(例えば、"yes.txt")を用意して、下記のようにコマンドの最後に" < yes.txt"を書き加えて、コンソール入力をテキストファイルからリダイレクトする。 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %Path%;任意のパス /f < yes.txt

hayabun
質問者

お礼

オプションの位置を変えてみることで、 上書き確認は出なくなりました。 テキストファイルからのリダイレクトというのも、使えそうですね。 気付きませんでした。 有難うございます。 が、元々Pathに設定されていた""で囲んであったパスが 追加後には解除されるという事態に・・・。 パスに半角スペースが入ってるんでちょっと困りますね。。 ひとまず、有難うございました。

関連するQ&A

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

    バッチでのレジストリ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へ飛ぶ処理の記述をご教授頂けますか? 宜しくお願い致します。

  • VB6での環境変数変更方法について

    VB6で開発しておりますが、環境変数を変更してすぐに反映させる方法はありますか?(OS は WinXP pro です) レジストリの「HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Environment」のキーを更新してもPCを再起動しないと反映されないようで困っています。 何か方法はあるのでしょうか?

  • 環境変数PATHをスクリプトかバッチから設定する方法

    社内研修の準備のために、何台ものパソコン(Windows XPを想定)のセットアップを 行うことがありまして、 ・ZIPファイルの展開 ・展開後フォルダを特定の場所へ配置 ・環境変数JAVA_HOMEとPATHの変更 などをバッチやJavaScriptを利用して自動的に処理させようと しています。ZIPの展開と配置は解決できたのですが、 環境変数(pathなど)をスクリプトかバッチから設定できないでしょうか? JavaScript(またはVBスクリプト)で次のように記述すると、 一見うまくいったように見えるのですが、レジストリが書き換わるだけで、 再起動しないとpathが有効になりませんでした。(スクリプト実行後に開いた コマンドプロンプトで echo %path% をしても反映されていない。) <setenvion.js> var shell = WScript.CreateObject("WScript.shell"); shell.RegWrite("HKEY_CURRENT_USER\\Environment\\path", "C:\\Program Files\\Java\\jdk1.6.0_06\\bin", "REG_EXPAND_SZ"); googleで検索しても、バッチを実行するためにpathを設定しましょう、みたいな 情報しか見つからないので、質問させていただきました。 上記のスクリプトでも再起動すれば反映されるのでその点我慢すればよいのですが、 なにかよい方法をご存知の方、よろしくお願いします。

    • ベストアンサー
    • Java
  • Pathを楽に設定したい

    Windows2000で、「システム環境変数」にすでに存在する「Path」変数に、いくつか長めのパスを追加で入れようとしています。入力間違いを避けるためにもバッチファイルを作って設定しようとしたのですが、どうもうまくいきません。 諸般の事情で、Autoexec.batはいじりたくないのです。 プログラムを組んで、レジストリのHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Pahtをいじるしかないのでしょうか。できれば、バッチファイルでチョロチョロっと書いて済ませたいのですけど。

  • Vistaでのレジストリ追加

    Vistaで下記のコマンドを実行しました。 「REG ADD "\\.\HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\8.0" /v DoNotAllowIE80 /t REG_DWORD /d 1 /f」 そうすると、 「エラー:ネットワーク パスが見つかりません。」 となってしまいます。 どこの記述が間違っているのでしょうか・・? (XPでは大丈夫でした。) 最終的には、バッチファイルにして、FDの中から実行したいと思っております。 以上、よろしくお願いいたします。

  • VB6.0でシステム環境変数PATHへ、%XXX%設定後、ログオフ以外で反映する方法について

    1.OS Windows2000 Professional SP4 2.プログラム VB6.0 3.質問内容   システム環境変数を登録後、ログアウトなしで、反映できない。   MS文書番号104011で、SendMessageTimeoutで、変更を通知しても   %XXXX%で、PATHに追加登録した内容が展開されない。   なお、regedt32.exeで、%XXXX%は、REG_EXPAND_SZで登録を確認 4.事象 1)登録内容   プログラムにて、システム環境変数に以下登録    A=C:\tmp    <= 新規     AA=%A%\work  <= 新規     PATH=現状項目;%A%\tmpi   <= 既存へ追加 2)プログラム実施結果    コマンドプロンプトで、確認を行うと、    AA=C:\tmp\work に、展開されているが、    PATH=現状項目;%A%\tmpi     と、展開されていない。また、この状態で、C:\tmp\tmpi に、    バッチを作成しC:\から、起動しても、PATHが通っていないため、    「プログラムが見つからない」というエラーがでます。    また、SendMessageTimeoutで、通知しても、コマンドプロンプトから    PATHを確認しても、PATH=現状項目;%A%\tmpi  となり、展開    されていない。   3)リブートすると、展開されるようです。     ※regedt32で、確認すると、PATHには、現状項目;%A%\tmpi で       登録されています。 5.疑問  リブートせずに、通知させる方法はないでしょうか?  特に、新規に登録したシステム環境変数はOKで、追加で登録したPATHに  反映できないのは、なぜでしょうか? 以上 アドバイスのほど、よろしくお願いします。

  • コマンドプロンプトについて

    バッチファイルを作ったんですが、途中でYESかNOの選択肢が出てきてコマンドプロンプトが開いたまま止まってしまいます。 例えば reg ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 と入力すると、 Value ProxyEnable exists,overwrite(Y/N)? って出ます。 これの選択肢も勝手に入力するようにするにはどのようにバッチファイルに記述すればいいですか?

  • バッチファイルで環境変数が設定されません

    よろしくお願いいたします。 Windows XP Pro の command.com において、バッチファイルの中で set コマンドを使って環境変数を設定しても、バッチから抜けると環境変数の設定ができていません。 バッチ終了後の環境変数は全てバッチ開始前と同じ状態です。 command.com のプロンプトで set コマンドを実行すると、環境変数はセットした内容に変化もしくは追加されます。 cmd.exe ではバッチからでもプロンプトからでも set コマンドで環境変数を操作できます。 なぜ command.com 上のバッチから操作できないのかわからず、不便でかないません。 アドバイスをよろしくお願いいたします。 @echo off set foo=word path=c:\ echo %foo% echo %path% 上記バッチを実行すると word c:\ と表示されますが、set コマンドで確認すると FOO は存在しません PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;... と表示されます。 これはバッチ実行前の値です。

  • パスの指定について(長文です。)

    お世話になっています、WSHにてレジストリを追記するスクリプトを作成していますが躓いてしまいました。お手数ですが、力をお貸しください。 求めるものは特定のパスにキーを追加し、値を代入することです。 下記のスクリプトを実行すると、[List]の下に[c:]-[program files]… と作成されてしまいます。[List]の下に[c:\program files\internet explorer\iexplore.exe]を作成指定と考えています。 strTime.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List" & "C:\\Program Files\\Internet Explorer\\iexplore.exe","C:\\Program Files\\Internet Explorer\\iexplore.exe:192.168.1.1/255.255.255.255,192.168.1.1/255.255.255.255:Enabled:Internet Explorer","REG_SZ" 以上、お手数をお掛けいたしますがご存知の方知恵を貸してください。

  • javaの環境変数設定

    java初心者です。コマンドプロンプトでjavacやjavac -versionと入力しても、 「javacは内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」と出てしまいます。 環境変数の設定でどこか間違っているのでしょうか? 変数PATH  変数値C:¥Program Files¥Java¥jdk1.8.0_60¥bin 変数値はエクスプローラからアドレスをコピーしたし、jdk1.8.0_60¥binにjavac.exeがあることも確認たので、これ以上どうしたらいいか分かりません。 osはwindows10です。