这看起来很简单,但结果却是如此痛苦。
在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.
设置ProgramFiles(x32)=%programfiles%可以直接从Win XP&上的命令行运行。 7。
我错过了什么?
作为旁注,我真的希望微软将%ProgramFiles%作为32位程序的目录。我无法看到必须进行此检查的逻辑,当这样的情况下,无论操作系统的位数如何,32位程序都将位于同一位置。
答案 0 :(得分:0)
你最好用任何编程而不是.bat文件语法。 IMHO。
但是“你缺少的是”.bat语法认为“程序”和“文件”是两个单独的单词(而不是一个路径的一部分)。
简单的解决方法:
cd c:\
dir/x pro*
在你的情况下,你可能会有一个“progra~1”(用于“程序文件”)和“progra~2”(用于“程序文件(x86)”。只需修改你的.bat文件:)
答案 1 :(得分:0)
@dbenham非常深入,非常感谢我在另一个问题上的启蒙,也解决了这个问题 - Different behaviour of DOS Environment setting, in if statement, in DOS prompt as compared to Windows Shortcut