如何使用命令确定Windows是32位还是64位?[重复]


78

可能的重复项:
如何判断计算机是否具有64位CPU或OS
在CLI OS版本中检测32/64位Windows Server
版本:32位还是64位?

如何从命令行确定我的Windows系统是32位还是64位?

我想知道操作系统的重要性,而不是硬件。

这个问题仅严格地适用于命令行,我不需要任何GUI解决方案。


1
嗯,可惜systeminfo没有列出这个。
塔玛拉·威斯曼

@MaQleod-我个人认为,只是因为您的答案都适合,两个问题并不能完全重复,因为这是一个更为具体的场景。我不知道您的答案是否完全适合“仅命令行”,因为它需要一个额外的实用程序,但是如果是我,我会将其发布为答案。
Shinrai 2011年

@MaQleod我个人不会将其称为重复项,因为它要求一种专门用于命令行的解决方案。您链接的问题为GUI解决方案提供了可接受的答案。
本·理查兹

1
谢谢你的编辑和答案。我选择了最适合我的情况的答案。
负值

我最终找到了与之完全相同的东西。(链接的帖子仅引用命令行,甚至提供了我的确切解决方案。)
Shinrai 2011年

Answers:


122

在提升的命令提示符下,键入wmic os get osarchitecture。我认为输出非常明显-它会返回“ 32位”或“ 64位”。


这听起来像我要使用的解决方案...现在,我知道了。
James T Snell

2
还是做同样的事情,在PowerShell中,如果你是一个W7机或者您已经安装了PS另一个Windows操作系统上:(gwmi win32_OperatingSystem).OSArchitecture
EBGreen

2
在Windows XP上无法在此处使用。返回错误:无效的查询。
2011年

1
警告:必须是管理员才能运行WMIC。
突破

@ user606723-我没有可以方便地进行XP安装的测试,但是我不认为WMI挂钩有太大变化。公平地说,OP没有指定操作系统,但是我必须自己对此进行测试。
Shinrai 2011年

56

systeminfo控制台程序将显示此内容。您将要查找“系统类型:”行。对于32位系统,将显示为“基于x86的PC”;对于64位系统,将显示为“基于x64的PC”。

或者,对于更快的方法,您可以简单地检查PROCESSOR_ARCHITECTURE环境变量。64位系统将说AMD64,而32位系统应说“ x86”。要检查这一点,您可以简单地将其回显:

echo %PROCESSOR_ARCHITECTURE%

MSDN Blogs上的David Wang扩展了此HOWTO:检测进程位


这不显示PROCESSOR类型,而不显示已安装的OS类型吗?
Shinrai 2011年

我不这么认为,因为32位模式和64位模式是处理器可能处于的不同模式。处理器可能处于32位模式,我不认为操作系统会固有地知道是否可以过渡到64位模式。但是,这是一个好点,必须进行测试。据我所知,我的兄弟在支持64位的处理器上安装了32位Win 7,我会请他检查一下。
本·理查兹

是的,我不确定(因此尝试性地回应),不幸的是没有什么方便检查自己的。我以为这只是给定处理器报告的字符串,无论它如何运行。肯定会有所帮助。
Shinrai 2011年

4
如果您在64位系统上运行32位OS,则%PROCESSOR_ARCHITECTURE%仍为“ x86”。在大多数情况下,64位OS可以运行32位程序,但是反之则不行
bobbymcr

2
由于echo%PROCESSOR_ARCHITECTURE% 甚至在sql server命令shell中也可以工作,因此投票最多。随着wmic os获取osarchitecture有时在sql server command shell中
不起作用

8

您可以检查是否%PROGRAMFILES(x86)%声明了环境变量。在32位系统上,将不会定义它(只会定义%PROGRAMFILES%)。这也比只检查Program Files(x86)目录是否存在更为安全,因为它可以移动(甚至删除)。


比检查文件夹更好的解决方法,是的。(我不喜欢使用变通方法,但是如果您要使用此方法,则可以使用。)
Shinrai 2011年

很好...我有一批检查文件夹,但这绝对会更优雅。
WernerCD 2011年

1
您还可以比较%PROGRAMFILES(x86)%%PROGRAMFILES%变量,以查看cmd是在32位还是64位模式下启动的。(因为在64位Windows上,您仍然可以运行32位cmd。)示例:IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32位cmd(即在64位Windows上运行.....)IF %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64bit cmd。
山姆·哈斯勒

8

我编写了一个简单的命令行应用程序,它将告诉您处理器和操作系统是64位还是32位。

读出示例:

C:\bitchecker
The CPU is 64-bit and the OS is 32-bit

根据请求,这是使用CLI选项编译的,由AutoIt编写的源代码。

If @CPUARCH = "x86" Then
    $CPUARCH = "32-bit"
Else
    $CPUARCH = "64-bit"
EndIf

If @OSARCH = "x86" Then
    $OSARCH = "32-bit"
Else
    $OSARCH = "64-bit"
EndIf

ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)

这是一个示例,如果您要为CPU(-c)和OS(-o)切换:

Dim $CPUARCH, $OSARCH

If @CPUARCH = "x86" Then
    $CPUARCH = "32-bit"
Else
    $CPUARCH = "64-bit"
EndIf

If @OSARCH = "x86" Then
    $OSARCH = "32-bit"
Else
    $OSARCH = "64-bit"
EndIf

If $CmdLine[0] = 0 Then
    ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)
Else
    Select
        Case $CmdLine[1] = "-c"
            ConsoleWrite($CPUARCH)
        Case $CmdLine[1] = "-o"
            ConsoleWrite($OSARCH)
        Case Else
            ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)
    EndSelect
EndIf

1
如果文件带有源代码,我会很好。下载一个小的exe,发布到m​​ediafire并运行它是相当不安的。
artifex 2011年

1
@artifex,添加了来源。
2011年

它可能是假的U_U Jocking :)
Pitto

这将是很好知道API的AutoIt内部使用..
user606723

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.