适用于 Windows7 32 位和 64 位的批处理文件

适用于 Windows7 32 位和 64 位的批处理文件

我需要为 Windows 7 创建一个批处理文件。此 .bat 文件仅用于安装应用程序。问题是我需要知道 Windows 7 是 32 位(然后运行 ​​32 位安装程序)还是 Windows 7 64 位(然后运行 ​​64 位安装程序)。我可以在批处理文件中使用哪个命令来知道 Windows 7 是 32 位还是 64 位?

提前致谢!!!

答案1

在 64 位环境中,你将有一个名为的环境变量

程序文件(x86)

在 32 位环境中,您没有该变量。因此,您可以检查

if defined ProgramFiles(x86) (
   REM do stuff for 64bit here
) else (
   REM do stuff for 32bit here
)

答案2

如果您不想使用临时 txt 文件,请使用管道:

Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry%  | Find /i "x86" 
If %ERRORLEVEL% == 0 (
    GOTO X86
) ELSE (
    GOTO X64
)


:X86

Commands here

GOTO END

:X64

commands here

:End

答案3

使用 DEFINED 时,不能用 % 符号将变量名括起来:

if defined ProgramFiles(x86) (
   :: do stuff for 64bit here
) else (
   :: do stuff for 32bit here
)

答案4

您可以使用环境变量 PROCESSOR_ARCHITECTURE 来确定进程本身是以 32 位还是 64 位运行。该值为 AMD64 或 x86。

不过你需要小心。如果你的批处理文件是从 32 位版本的 CMD.EXE(在 \Windows\SysWOW64 中)运行的,则此变量将设置为“x86”,而如果是从 64 位版本的 Windows 上 \Windows\System32 中的 CMD.EXE 运行的,则此变量将设置为“AMD64”。

相关内容