Answers:
一种更快的方法是检查%ProgramFiles(x86)%目录的存在。如果存在,则您正在运行64位,如果不存在,则您正在运行32位。
快速一线:
if exist "%ProgramFiles(x86)%" echo 64-bit
64-bit
如果目录存在,则将输出。但是,如果它不作为变量存在但作为目录存在(如%ProgramFiles(x86)%),那将失败。
您还可以使用查找工具来确定比特数的更准确方法。
set | find "ProgramFiles(x86)"
或systeminfo
以前使用命令
systeminfo | find /I "System type"
(包括/I
可在XP / 2003/2008 / etc中使用的)
怎么样:
echo %PROCESSOR_ARCHITECTURE%
这将在32位系统上返回x86,在64位系统上返回AMD64(或IA64)。
Program Files (x86)
。您还可以检查%PROGRAMFILES(X86)%
环境变量是否存在(如果不存在,则说明您使用的是x86计算机)。
systeminfo | find /I "System type"
这取决于语言环境,并且比较慢。
echo %PROCESSOR_ARCHITECTURE%
注意,它是32位的x86cmd.exe
。
正确方法:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
使用WMI查询进行检查的其他方法:
电源外壳:
(gwmi win32_computersystem).SystemType
CMD:
wmic OS get OSArchitecture
从此处提取:http : //www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html
有很多方法可以检查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.
尽管这不是理想的答案,并且systeminfo.exe
应该是确定系统类型(例如32位或64位)的首选方法,但是如果您不想等待systeminfo.exe
完成其工作,则该解决方案的运行速度会更快一些。
命令:
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
通过对注册表查询和搜索字符串的正确更改,您还可以检查Windows 95之前的操作系统版本。systeminfo.exe
更精确,更正确的查询方式,reg.exe query
更快,更向后兼容。
reg query "HKLM\[..as before..]\Version" /v BuildLabEx
方法1:(
使用PROCESSOR_ARCHITECTURE
和进行两步验证PROCESSOR_ARCHITEW6432
)
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
if %Arch% == "x64" (
msg * "yessss"
) else (
msg * "noooo"
)
方法2:
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x32" > NUL && set OS=32BIT || set OS=64BIT
if %OS%==32BIT echo "YESSS"
if %OS%==64BIT echo "NOOO"
systeminfo | find "System type"
国会大厦T没有任何回报。