みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

環境変数「%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を予定しています。

投稿日時 - 2007-01-29 14:50:04

QNo.2705866

困ってます

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

このような感じですかね。
まぁ、あとは多少違っても解決できることと思います。
---------------------------
@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

投稿日時 - 2007-01-29 22:43:16

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

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

投稿日時 - 2007-01-29 17:04:47

ANo.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

投稿日時 - 2007-01-29 17:03:28

補足

ご回答ありがとうございます。

>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%を用いるのでは、
今回実施したい内容を満足できない場合があります。

説明不足で申し訳ありません。

投稿日時 - 2007-01-29 17:25:04

あなたにオススメの質問