我需要为 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”。