无论 Windows 版本如何,如何在 Windows 的 Program Files 文件夹中写入 32 位可执行文件的路径?

无论 Windows 版本如何,如何在 Windows 的 Program Files 文件夹中写入 32 位可执行文件的路径?

我想写一些类似的东西

%ProgramFiles(x86)%\someprogram\someprogram.exe

这在 Windows 32 位和 64 位版本中都适用

但:

  1. %ProgramFiles%仅在 32 位 Windows 中指向 32 位程序文件文件夹
  2. %ProgramFiles(x86)%仅在 64 位 Windows 中指向 32 位程序文件文件夹(在 32 位 Windows 中不存在)

是否存在任何 Windows 环境变量始终指向 32 位程序文件文件夹,无论 Windows 版本如何?

答案1

您随时可以添加%ProgramFiles(x86)%到 32 位 Windows 平台。您可以使用简单的命令行来添加它:

Set ProgramFiles(x86) = "C:\Program Files"

这样你就可以在各个平台上保持一致性。

编辑:

既然你告诉我它是做什么的,我会按照你的指示做这样的事情:

1 - Change to the directory for the program. 

2 - open a command prompt 

3a - type "cd %programfiles(x86)%" 

3b - If  you receive the error "The system cannot find the path specified", 
     go to step 3c.  Otherwise go to 4. 

3c - type "cd %programfiles%" 

4 - Other stuff

答案2

我的第一个解决方案是:

  if "%ProgramFiles(x86)%" == "" (
    echo Win x86
    set PRGFILES=%ProgramFiles%
  ) else (
    echo Win x64
    set PRGFILES=%ProgramFiles(x86)%
  )
  echo 1: %PRGFILES%

上述解决方案在第一次测试时造成了一些问题。似乎 %ProgramFiles(x86)% 中的“)”字符导致了 if 结束。因此,第二个解决方案:

  if "%ProgramFiles(x86)%" == "" set PRGFILES=%ProgramFiles%
  if not "%ProgramFiles(x86)%" == "" set PRGFILES=%ProgramFiles(x86)%
  echo 2: %PRGFILES%

仅在 Win 7 x64 和 Win XP (x86) 上测试。

根据我的测试,最好使用自定义临时环境变量,不要直接使用程序文件变量(上面提到的问题)。

相关内容