闪存驱动器上的批处理文件 - 如何检查OS体系结构?

时间:2011-08-09 23:57:48

标签: windows batch-file

我正在建立一个便携式开发环境。我正在尝试从闪存驱动器插入(32或64)批处理文件中获取当前系统的位数,因此我可以使用正确版本的IDE。

这篇文章是一个开头:http://support.microsoft.com/kb/556009但它使用的是相对地址,当然我的闪存驱动器没有操作系统,所以代码默认每次都是i586。

我需要做什么LOC?

4 个答案:

答案 0 :(得分:2)

只需检查我的64位机器上的PROCESSOR_ARCHITECTURE环境变量是“AMD64”,我想在32位机器上它是“x86”。

答案 1 :(得分:2)

Tobias Schlegel的解决方案有一个警告:PROCESSOR_ARCHITECTURE环境变量只返回当前进程的位数。在64位计算机上,由于WoW64仿真,PROCESSOR_ARCHITECTURE在32位进程中仍然是“x86”。

为了解决这个问题,Microsoft添加了一个新的环境变量PROCESSOR_ARCHITEW6432,该变量仅在WoW64下运行的进程中定义。

因此,正确的代码是:

if "%PROCESSOR_ARCHITECTURE%" == "x86" if "%PROCESSOR_ARCHITEW6432%" == "" goto Arch32
goto Arch64

:Arch32
echo System architecture is 32-bit!
goto:eof

:Arch64
echo System architecture is 64-bit!
goto:eof

这种区别很重要,因为如果在64位计算机上从32位进程启动cmd.exe,则cmd.exe将在WoW64下运行,因此接受的解决方案将不正确。

答案 2 :(得分:1)

wmic OS get OSArchitecture

应返回32-bit64-bit

答案 3 :(得分:0)

你可以使用这段代码(注册表):

Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0

REG.exe Query %RegQry% 2>NUL | find /I /N "x86">NUL

If [%ERRORLEVEL%] == [0] (
    echo X86
) ELSE (
    echo AMD64
)