0

这看起来很简单,但结果却是如此痛苦。

在 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 位程序将位于同一位置,而不管操作系统的位数如何。

4

2 回答 2

0

除了 .bat 文件语法之外,您几乎可以使用任何东西进行编程。恕我直言。

但是“你所缺少的”是 .bat 语法将“程序”和“文件”视为两个单独的词(而不是路径的一部分)。

简单的解决方法:

  cd c:\
  dir/x pro*

在您的情况下,您可能会有一个“progra~1”(用于“程序文件”)和“progra~2”(用于“程序文件(x86)”。只需相应地修改您的 .bat 文件即可:)

于 2012-08-16T04:50:24.280 回答
0

@dbenham 非常深入,非常感谢我对另一个问题的启发,也解决了这个问题 - DOS 环境设置的不同行为,在 if 语句中,在 DOS 提示符中与 Windows 快捷方式相比

于 2012-08-16T20:12:30.030 回答