这看起来很简单,但结果却是如此痛苦。
在 Windows 7 上,我可以将以下内容粘贴到命令提示符中,并将其设置ProgramFiles(x32)
为%programfiles%
or %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 位程序的目录。我看不出必须进行此检查的逻辑,因为这样,一个 32 位程序将位于同一位置,而不管操作系统的位数如何。