質問: postgresql インストール先の取得 windows7でレジストリよりpostgresqlのインストール先をバッチで取得しようとしたのですが取得できませんでした。 同じ階層で「文字列値」に空白がない「version」は取得できるのですが 「base directory」になると取得できません。 文字列値に空白がある場合「”~”(ダブルコーテーション)」でくくればいいとあったのですが、駄目でした。 どなたかご存知の方教えてください。 @echo off for /f "tokens=1,2,*" %%a in ('reg query "hkey_local_machine\software\postgresql\installations\postgresql-9.0" /v "version"') do if "%%a"=="version" set get_version=%%c for /f "tokens=1,2,*" %%a in ('reg query "hkey_local_machine\software\postgresql\installations\postgresql-9.0" /v "base directory"') do if "%%a"=="base directory" set get_dir=%%c echo postgresql version cho %get_version% echo postgresql directory echo %get_dir% pause exit
回答: "base directory"そのものにも空白があります。 そのため、 (略)do if "%%a %%b"=="base directory"(略) と指定しないと見つからないようです。 "program files"の空白の処理が面倒な気がします。 "programfiles"とかにインストールされていると空白の数が違ってきますので。 コマンドプロンプトで reg query "hkey_local_machine\software\postgresql\installations\postgresql-9.0" /v "base directory" を実行して結果を見るとわかりやすいです。