如何从命令行确定当前版本的 Windows 是 32 位还是 64 位?

28 windows computer-architecture cpu-architecture windows-edition

确定操作系统运行的是 32 位版本还是 64 位 Windows 的命令行是什么?

小智 36

您可以通过 WMI 获取此信息:

wmic OS get OSArchitecture
Run Code Online (Sandbox Code Playgroud)

我的系统上的示例:

C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit
Run Code Online (Sandbox Code Playgroud)


小智 19

命令行:

systeminfo | findstr /I type:
Run Code Online (Sandbox Code Playgroud)

示例输出:

系统类型:基于X86的PC

在本例中,X86 表示 32 位系统。

/I 参数表示不区分大小写的搜索

  • 但是“基于 X86 的 PC”与 OSArchitecture 32 位相同吗?您可以在 x64 处理器上运行 32 位 Win XP。 (2认同)

小智 15

我无法在另一篇文章中附上答案,所以在这里。管道的结果systeminfo- 花费了相当多的时间并写入控制台,因此不是命令文件的最佳解决方案(批处理脚本 - 无论如何你喜欢称它们为 B-) )。

即使使用findstr- 它在其他语言版本的 Windows 上也找不到。在中欧语言 win7 操作系统上,它还返回 ..."X86-based"... 结果,但在“类型”上寻找其他内容。我不确定它是否会因 os 的其他语言变体而异。

可能“wmic”方法是最可靠的——它直接询问操作系统。

其他可能的快速解决方案可以是检查变量(至少在我的 win7 上工作)。

echo %PROCESSOR_ARCHITECTURE%
Run Code Online (Sandbox Code Playgroud)

好的 - 记住很长但可能set | findstr ARCH可以记住。

当然 - 有些人可以修改系统变量,因此不如wmic. 但是可以快速使用。

我希望我能帮助别人。


Syn*_*ech 14

在 Windows 下有多种检查处理器架构的方法:

  • 在至少 Windows 2000及更高版本中检查处理器体系结构的最快、最简单和最兼容的方法是检查PROCESSOR_ARCHITECTURE 环境变量

    echo %PROCESSOR_ARCHITECTURE%

  • 但是,这可能会产生不同的结果,具体取决于命令提示符的打开方式。为避免由于 WoW64获得“意外结果”,您可以直接从注册表中读取它(微软在密钥中输入了不少于两个拼写错误):

    reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE

  • 微软还建议从注册表中读取硬件信息存储:

    reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier

  • 您还可以检查Program Files目录的 x86 版本(或指向它的环境变量)是否存在,因为它只存在于 64 位系统上。与PROCESSOR_ARCHITECTURE变量不同,这不依赖于命令提示符的运行方式,因为目录存在(或不存在)而不管提示符如何打开:

    • ::via env-var
      if not defined ProgramFiles(x86) echo 32-bit

    • ::via file-system
      if not exist "%systemdrive%\Program Files (x86)" echo 32-bit

这些方法可以组合在一个单独的批处理文件(例如,cpuinfo.bat)中,并提供了一种很好的、​​闪电般快速的方式来从标准的 Windows NT 命令提示符检查系统,而无需求助于运行其他程序或框架。

下面的批处理文件在 32 位和 Intel 64 位系统上进行了测试(请在 AMD64 上测试),在 <1 秒内给出正确的结果:

检测结果

@echo off

echo PROCESSOR_ARCHITECTURE var:
echo %PROCESSOR_ARCHITECTURE% | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo PROCESSOR_ARCHITECTURE reg:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo CentralProcessor reg:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo ProgramFiles(x86) var:
if not defined ProgramFiles(x86) (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo ProgramFiles(x86) dir:
if not exist "%systemdrive%\Program Files (x86)" (
    echo   32-bit
) else (
    echo   64-bit
)
echo.
Run Code Online (Sandbox Code Playgroud)


小智 6

我找不到该OSArchitecture物业(根据 phoebus 的回答),因此我建议改用该SystemType物业ComputerSystem

wmic computersystem get systemtype从命令提示符运行命令给出

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC
Run Code Online (Sandbox Code Playgroud)