34

当我%PROGRAMFILES(x86)%在 32 位的 Windows 操作系统(即旧版本的 Windows,如 Windows XP、Vista)上使用环境变量时会发生什么?

我希望它会简单地解决:C:/Program Files. 这会发生吗?

4

4 回答 4

54

据此环境变量%PROGRAMFILES(x86)%仅在 64 位系统上可用。

但是,如果您在 64 位系统上并使用%PROGRAMFILES%,您获得的结果取决于请求环境变量的进程是 32 位还是 64 位。

因此,从 64 位系统上的 64 位进程你会得到C:\Program Files,从 64 位系统上的 32 位进程你会得到C:\Program Files (x86),从 32 位系统上的 32 位进程你会得到C:\Program Files

如果这没有帮助,也许您可​​以评论或编辑您的原始问题,以使其具体说明您正在尝试做什么。就目前而言,您的问题的答案是“否”。

于 2013-07-17T05:05:23.953 回答
3

基思希尔在这里回答了这个问题,总结:

${env:ProgramFiles(x86)}未在 32 位机器上定义

如果您总是想向/从 x86 目录放置/获取数据,那么您可以使用此代码来确定文件路径:

$file = "\file"
if ("${Env:ProgramFiles(x86)}")
{
    $fullPath = "${Env:ProgramFiles(x86)}\$file"
}
else
{
    $fullPath = "${Env:ProgramFiles}\$file"
}
于 2015-08-03T17:13:07.510 回答
2

由于%ProgramFiles(x86)%未在 Windows 7 32 位上定义,因此我想出了一个解决方法:

SET MyPath="%ProgramFiles(x86)%\MyFolder\MyApplication.exe"
rem workaround for Windows7 32 bit:
IF NOT DEFINED ProgramFiles(x86) SET MyPath="%PROGRAMFILES%\MyFolder\MyApplication.exe"

用例:我想从已安装的批处理文件中调用应用程序:

  • 在 C:\Program Files\MyFolder\MyApplication.exe 中的 Windows 7 32 位
  • 在 C:\Program Files(x86)\MyFolder\MyApplication.exe 中的 Windows 7 64 位

这种方式%MyPath%总是指向正确的路径。

于 2018-11-16T07:35:54.463 回答
-15

如果您%programfiles%在 32 位计算机/笔记本电脑上使用,它将打开C:\Program Files.

如果您%programfiles%在 64 位计算机/笔记本电脑上使用,它将打开C:\Program Files.

如果您在 32 位计算机/笔记本电脑上安装了 64 位程序,它将安装在名为 的新文件夹中Program Files (x64),该文件夹位于“C”驱动器中。在这种情况下,您必须使用%programfiles(x64).

如果您在 64 位计算机/笔记本电脑上安装了 32 位程序,它将安装在名为 的新文件夹中Program Files (x86),该文件夹位于“C”驱动器中。在这种情况下,您必须使用%programfiles(x86).

于 2015-02-22T15:29:47.343 回答