これはとても簡単なことのように思えますが、実際にはとても面倒なことでした。
Windows 7 では、以下をコマンド プロンプトに貼り付けて、またはProgramFiles(x32)
のいずれか%programfiles%
に設定でき%programfiles(x86)%
ます。
%comspec% /c if exist "%programfiles%" (set "ProgramFiles(x32)=%programfiles%") else (set %ProgramFiles(x32)=%programfiles(x86)%")
ただし、Windows XP では、同じ方法と他の方法を使用しても、同じ結果が得られません。
E:\>%comspec% /c if exist "%programfiles%" (set "ProgramFiles(x32)=%programfiles%") else (set "ProgramFiles(x32)=%programfiles(x86)%")
E:\Program was unexpected at this time.
E:\>%comspec% /c if exist "%programfiles%" (set ProgramFiles(x32)=%programfiles%) else (set ProgramFiles(x32)=%programfiles(x86)%)
E:\Program was unexpected at this time.
E:\>%comspec% /c if exist "%programfiles%" (set "ProgramFiles(x32)"="%programfiles%") else (set "ProgramFiles(x32)=%programfiles(x86)%")
E:\Program was unexpected at this time.
E:\>%comspec% /c if exist "%programfiles%" (set ProgramFiles(x32)="%programfiles%") else (set ProgramFiles(x32)=%programfiles(x86)%)
"E:\Program Files") was unexpected at this time.
E:\>%comspec% /c if exist "%programfiles%" (set ProgramFiles(x32)=%%programfiles%%) else (set ProgramFiles(x32)=%programfiles(x86)%)
%E:\Program was unexpected at this time.
set ProgramFiles(x32)=%programfiles% は、Win XP と 7 の両方で、コマンド ラインから直接正常に動作します。
私は何が欠けていますか?
余談ですが、Microsoft が %ProgramFiles% を 32 ビット プログラムのディレクトリにしてくれたらよかったのにと思います。OSのビット数に関係なく、32ビットプログラムが同じ場所にある場合、このチェックを行う必要があるロジックがわかりません。