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


26

在命令行中查找操作系统是否正在运行32位版本或64位Windows?


用什么语言?
Alix Axel 2010年

@AlixAxel,他们说的是命令行,所以大概是批处理。
Synetech 2012年

Answers:


33

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

wmic OS get OSArchitecture

我系统上的示例:

C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit

我喜欢这个答案(必须去学习一些WMI控制台:)),但是我必须把它交给“ systeminfo”进行击键。;)
Ƭᴇcʜιᴇ00710年

XP?
Synetech

18

命令行:

systeminfo | findstr /I type:

示例输出:

系统类型:基于X86的PC

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

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


我为您提供了击键的要点,然后您使它更长了。嘿嘿:)
Ƭᴇcʜιᴇ007

这不是我的答案:P
约翰·T

2
但是“基于X86的PC”是否与32位OSArchitecture相同?您可以在x64处理器上运行32位Win XP。
迈克尔·卡伦

如果您的操作系统语言是德语(或英语以外的其他语言),请当心!我必须更改systeminfo | findstr /I typ:为整个条目,这是Systemtyp: x64-based PC
CeOnSql

systeminfo | findstr /C:"System Type"也检索相同的信息,但我猜较长的文本因此不太受欢迎。
阿披耶特(Abhijeet)

13

我无法将答案附加到其他帖子,因此在这里。systeminfo传递- 的结果需要花费大量时间并写入控制台,因此不是命令文件的最佳解决方案(批处理脚本-无论如何,您都希望将它们称为B-))。

即使使用findstr-在其他语言版本的Windows上也找不到。在欧洲中枢语言win7 os上,它还会在结果上返回“基于X86”……但是在寻找其他类型“ type”。我不确定操作系统的其他语言版本是否会有所不同。

“ wmic”方法可能是最可靠的-它直接询问os。

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

echo %PROCESSOR_ARCHITECTURE%

好的-记住的时间很长,但可能set | findstr ARCH会记住一个。

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

我希望我能帮助别人。


我不确定echo命令是否可以在我的XP机器上使用,因为我以前从未见过此环境变量(也许是因为我从未寻找过它),但确实如此。+1是一个简单的解决方案。
音乐

11

有多种方法可以检查Windows下的处理器体系结构:

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

    echo %PROCESSOR_ARCHITECTURE%

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

    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.

5

我找不到该OSArchitecture属性(根据phoebus的回答),所以我建议改用该SystemType属性ComputerSystem

wmic computersystem get systemtype从命令提示符运行命令可以

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC

4

常规命令行:wmic OS get OSArchitecture (IIRC)

电源外壳: (gwmi win32_computersystem).SystemType


1
我进入Invalid QueryXP。
Synetech 2012年

1

如果您指的是Windows操作系统,则可以将vbscript与WMI一起使用

strComputer = "."    
Set objWMIService = GetObject("winmgmts{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" & strComputer & "\root\cimv2")    
Set colSettings = objWMIService.ExecQuery("SELECT * FROM Win32_Processor")

For Each objProcessor In colSettings
Wscript.Echo "System Type: " & objProcessor.Architecture
Wscript.Echo "Processor: " & objProcessor.Description
Wscript.Echo "Address Width: "& objProcessor.AddressWidth
Next

1

您可以使用“系统信息”找到该信息

开始->运行-> winmsd.exe

在“系统摘要” /“系统类型”下,您可以找到操作系统版本

X64-> 64位
X86-> 32位

JohnT在GUI中的答案;)


1

转到开始»运行,然后键入cmd。现在您将进入命令提示符。您可以在那里输入 systeminfo,然后按Enter。花费几秒钟即可获取所有系统信息。您也可以找到处理器数据。

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • x86系列意味着您的处理器是32位的。
  • x64系列意味着您的处理器是64位的。

C:\ Documents and Settings \ mr85464> systeminfo

OS Name:                   Microsoft Windows XP Professional
OS Version:                5.1.2600 Service Pack 3 Build 2600
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Member Workstation
OS Build Type:             Multiprocessor Free
Product ID:                76487-640-3658033-23932
Original Install Date:     3/16/2012, 2:03:44 PM
System Up Time:            5 Days, 21 Hours, 35 Minutes, 51 Seconds
System Manufacturer:       Dell Inc.
System Model:              OptiPlex 210L
System type:               X86-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
~2992 Mhz

2
确实需要几秒钟!再次运行它将无济于事,因为它不缓存信息。此外,Windows更新会导致有关体系结构的部分在屏幕外快速滚动,因此,除非您有足够大的缓冲区,否则需要将其传递到中more
Synetech

0

我使用的简单代码:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.