Câu trả lời:
Một cách nhanh hơn một chút sẽ là kiểm tra sự tồn tại của thư mục% ProgramFiles (x86)%. Nếu nó tồn tại thì bạn đang chạy 64 bit, nếu nó không tồn tại thì bạn đang chạy 32 bit.
Nhanh một lớp lót:
if exist "%ProgramFiles(x86)%" echo 64-bit
Điều đó sẽ xuất 64-bit
nếu thư mục tồn tại. Tuy nhiên, điều đó sẽ thất bại nếu nó không tồn tại dưới dạng một biến nhưng nó đã tồn tại dưới dạng một thư mục (dưới dạng% ProgramFiles (x86)%).
Bạn cũng có thể sử dụng công cụ tìm kiếm để có cách xác định bitness chính xác hơn.
set | find "ProgramFiles(x86)"
hoặc sử dụng systeminfo
lệnh trước đó
systeminfo | find /I "System type"
(bao gồm /I
để hoạt động trên XP / 2003/2008 / etc)
Làm thế nào về:
echo %PROCESSOR_ARCHITECTURE%
Điều này sẽ trả về x86 trên các hệ thống 32 bit và AMD64 (hoặc IA64 ) trên các hệ thống 64 bit.
Program Files (x86)
thư mục như người khác đã đăng. Bạn cũng có thể kiểm tra sự tồn tại của %PROGRAMFILES(X86)%
biến môi trường (nếu nó không tồn tại, thì bạn đang sử dụng máy x86).
systeminfo | find /I "System type"
Đây là phụ thuộc địa phương, và chậm .
echo %PROCESSOR_ARCHITECTURE%
Lưu ý rằng đó là x86 trong 32 bitcmd.exe
.
Cách chính xác:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
Một cách khác để kiểm tra với truy vấn WMI:
PowerShell:
(gwmi win32_computersystem).SystemType
CMD:
wmic OS get OSArchitecture
Trích xuất từ đây: http://www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html
Có nhiều cách để kiểm tra kiến trúc bộ xử lý trong Windows:
Cách nhanh nhất, dễ nhất và tương thích nhất để kiểm tra kiến trúc bộ xử lý trong ít nhất Windows 2000 trở lên là kiểm tra PROCESSOR_ARCHITECTURE
biến môi trường :
echo %PROCESSOR_ARCHITECTURE%
Tuy nhiên, điều này có thể cho các kết quả khác nhau, tùy thuộc vào cách mở dấu nhắc lệnh. Để tránh nhận được kết quả không mong đợi, do ứng dụng WoW64 , bạn có thể đọc trực tiếp từ sổ đăng ký (Microsoft đã thực hiện không dưới hai lỗi chính tả trong khóa ):
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Microsoft cũng đề nghị đọc kho thông tin phần cứng từ sổ đăng ký:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier
Bạn cũng có thể kiểm tra sự tồn tại của phiên bản x86 của Program Files
thư mục (hoặc biến môi trường trỏ đến nó) vì nó chỉ tồn tại trên hệ thống 64 bit. Không giống như PROCESSOR_ARCHITECTURE
biến, điều này không phụ thuộc vào cách mà dấu nhắc lệnh được chạy do thư mục tồn tại (hoặc không) bất kể cách mở dấu nhắc:
::via env-var
if not defined ProgramFiles(x86) echo 32-bit
::via file-system
if not exist "%systemdrive%\Program Files (x86)" echo 32-bit
Các phương thức này có thể được kết hợp trong một tệp bó (ví dụ: cpuinfo.bat
) và cung cấp một cách nhanh chóng, nhanh chóng để kiểm tra hệ thống từ dấu nhắc lệnh Windows NT tiêu chuẩn mà không cần phải dùng đến các chương trình hoặc khung khác.
Điều này đã được thử nghiệm trên các hệ thống 32 bit và Intel 64 bit (vui lòng thử nghiệm trên AMD64), cho kết quả chính xác trong <1 giây:
@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.
Tôi thực sự phải nghiên cứu sâu về vấn đề này và có cái nhìn thực tế xung quanh trong WMI.
Theo tôi, tùy chọn tốt nhất là chỉ cần sử dụng chuỗi PowerShell này
(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType
Điều này thậm chí hoạt động với Windows 2003 và XP cũ
Câu trả lời sẽ là một trong
PC dựa trên x64
Hoặc nếu quay lại một số công cụ cmd lỗi thời
wmic computersystem get systemtype
Mặc dù đây không phải là câu trả lời lý tưởng và systeminfo.exe
nên là phương pháp xác định loại hệ thống ưa thích của bạn, tức là 32 bit hoặc 64 bit, giải pháp này chạy nhanh hơn một chút nếu bạn không muốn chờ đợisysteminfo.exe
hoàn thành công việc.
Lệnh:
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
Với các thay đổi chính xác cho truy vấn đăng ký và chuỗi tìm kiếm, bạn cũng có thể kiểm tra các phiên bản hệ điều hành từ Windows 95. systeminfo.exe
chính xác hơn và cách truy vấn chính xác, reg.exe query
nhanh hơn và tương thích ngược hơn.
reg query "HKLM\[..as before..]\Version" /v BuildLabEx
Phương pháp 1:
(Xác thực hai bước với PROCESSOR_ARCHITECTURE
và 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"
)
Cách 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"
nguồn: /superuser//a/293143/249349
systeminfo | find "System type"
trả về