我想写一些类似的东西
%ProgramFiles(x86)%\someprogram\someprogram.exe
这在 Windows 32 位和 64 位版本中都适用
但:
%ProgramFiles%
仅在 32 位 Windows 中指向 32 位程序文件文件夹%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) 上测试。
根据我的测试,最好使用自定义临时环境变量,不要直接使用程序文件变量(上面提到的问题)。