• ベストアンサー

環境変数「%USERPROFILE%」の内容をバッチファイルで設定したい

以前、以下のような質問をした者です。 <<http://oshiete1.goo.ne.jp/qa2688460.html>> 上記質問を踏まえて自分が作成したファイルは、 ・ファイル名「OVERRIDE_SET.reg」 ・ファイル内容 「 1行目: Windows Registry Editor Version 5.00 2行目: [HKEY_CURRENT_USER\Environment] 3行目: "OVER_RIDE"="%USERPROFILE%" 」 という内容でユーザー環境変数に  変数名:OVER_RIDE(仮名称)  変数値:%USERPROFILE%      (値には↑の文字列が入るが表示は「C:\Documents and Settings\(ユーザー名)」) を設定できました。 しかし、 変数値が「%USERPROFILE%」では、あるソフトを動かす際にエラーになってしまいました。 手操作で変数値「%USERPROFILE%」を「C:\Documents and Settings\(ユーザー名)」と「%USERPROFILE%」が示す文字列を実際に打ち込んだところ エラーは解消できました。 バッチファイルにて「%USERPROFILE%」の部分を、 「C:\Documents and Settings\(ユーザー名)」にするには どうすればよいでしょうか? 実行環境はOS、WindowsXPかWindows2000を予定しています。

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

  • ベストアンサー
  • driverII
  • ベストアンサー率27% (248/913)
回答No.3

このような感じですかね。 まぁ、あとは多少違っても解決できることと思います。 --------------------------- @echo off setlocal set f="c:\temp\a.reg" for /f "tokens=3 delims=\" %%i in ("%USERPROFILE%") do set a="C:\\Documents and Settings\\%%i" echo Windows Registry Editor Version 5.00>%f% echo.>>%f% echo [HKEY_CURRENT_USER\Environment]>>%f% echo "OVER_RIDE"=%a%>>%f% echo.>>%f% regedit -s %f% del %f% endlocal

その他の回答 (2)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

書き忘れました。 #1の内容を「ファイル名.bat」で保存し、各PCで実行。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

c:\temp\a.reg は適当に変えてください。 --------------- echo off echo Windows Registry Editor Version 5.00>c:\temp\a.reg echo.>>c:\temp\a.reg echo [HKEY_CURRENT_USER\Environment]>>c:\temp\a.reg echo "OVER_RIDE"="C:\\Documents and Settings\\%USERNAME%">>c:\temp\a.reg echo.>>c:\temp\a.reg regedit -s c:\temp\a.reg del c:\temp\a.reg

xf710
質問者

補足

ご回答ありがとうございます。 >echo "OVER_RIDE"="C:\\Documents and Settings\\%USERNAME%">>c:\temp\a.reg という一行について補足させて下さい。 「%USERPROFILE%」で取得する、「C:\Documents and Settings\(ユーザー名)」のユーザー名と 「%USERNAME%」で取得するユーザー名は必ずしも同じとは限りません。 Ex. 「AAA」というユーザー名でログインした後、「AAA」と重複するユーザーアカウントを作成した場合、「AAA.Group」といったように本来のユーザー名の後にドメイングループが記述されるような場合があります。 この状態から「AAA」を削除した場合「AAA.Group」が残り、 ログイン時は「AAA」(%USERNAME%の値)で入ったとしても参照するCのDocument and Settingsの直下のフォルダは「AAA.Group」(%USERPROFILE%の値)と両者の値が異なる場合があります。 よってご提示頂いた%USERNAME%を用いるのでは、 今回実施したい内容を満足できない場合があります。 説明不足で申し訳ありません。

関連するQ&A