Yanıtlar:
% ProgramFiles (x86)% dizininin varlığını kontrol etmek biraz daha hızlı bir yol olabilir. Varsa 64 bit, yoksa 32 bit çalıştırıyorsunuz demektir.
Hızlı bir astar:
if exist "%ProgramFiles(x86)%" echo 64-bit
64-bit
Dizin varsa , çıktı alınacaktır . Ancak değişken olarak olmasa da bir dizin olarak (% ProgramFiles (x86)% olarak) mevcut olsaydı bu başarısız olur.
Bulmayı, bitliği belirlemek için daha doğru bir yol bulmak için de kullanabilirsiniz.
set | find "ProgramFiles(x86)"
veya systeminfo
daha önce komutu kullanarak
systeminfo | find /I "System type"
( /I
XP / 2003/2008 / vs'de çalışmak için dahil )
Nasıl olur:
echo %PROCESSOR_ARCHITECTURE%
Bu , 32 bit sistemlerde x86 ve 64 bit sistemlerde AMD64 (veya IA64 ) döndürür .
Program Files (x86)
başka birinin yayınladığı dizinin varlığını kontrol etmekten çok daha iyi bir çözümdür . Ortam değişkeninin varlığını da kontrol edebilirsiniz %PROGRAMFILES(X86)%
(eğer mevcut değilse , bir x86 makinesindesiniz).
systeminfo | find /I "System type"
Bu, yerel ayara bağlı ve yavaştır .
echo %PROCESSOR_ARCHITECTURE%
32- bit'te x86 olduğuna dikkat edin cmd.exe
.
Doğru yol:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
WMI sorgusu ile kontrol etmenin diğer yolu:
Güç kalkanı:
(gwmi win32_computersystem).SystemType
CMD:
wmic OS get OSArchitecture
Buradan alıntı: http://www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html
Windows altında işlemci mimarisini kontrol etmenin birçok yolu vardır:
En az Windows 2000 ve sonraki sürümlerde işlemci mimarisini kontrol etmenin en hızlı, en kolay ve en uyumlu yolu PROCESSOR_ARCHITECTURE
ortam değişkenini incelemektir :
echo %PROCESSOR_ARCHITECTURE%
Ancak, bu komut isteminin açılma şekline bağlı olarak farklı sonuçlar verebilir. Almamak için sebebiyle WoW64 için “beklenmedik sonuçlar” , (Microsoft daha az yapılan doğrudan kayıt defterinden okuyabilirsiniz anahtarında iki yazım hatası ):
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Microsoft ayrıca donanım bilgi deposunun kayıt defterinden okunmasını önerir:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier
Ayrıca , yalnızca 64 bit sistemde bulunacağı için Program Files
dizinin x86 sürümünün (veya bunu işaret eden ortam değişkeninin) olup olmadığını da denetleyebilirsiniz. PROCESSOR_ARCHITECTURE
Değişkenin aksine , bu komut isteminin nasıl açıldığına bakılmaksızın dizin var olduğundan (veya olmadığından) komut isteminin çalışma şekline bağlı değildir:
::via env-var
if not defined ProgramFiles(x86) echo 32-bit
::via file-system
if not exist "%systemdrive%\Program Files (x86)" echo 32-bit
Bu yöntemler tek bir toplu iş dosyasında (örn. cpuinfo.bat
) Birleştirilebilir ve diğer programların veya çerçevelerin çalıştırılmasına başvurmanıza gerek kalmadan sistemi standart bir Windows NT komut isteminden kontrol etmek için güzel, yıldırım hızında bir yol sağlar.
Bu, 32 bit ve Intel 64 bit sistemlerde test edildi (lütfen AMD64 üzerinde test edin), <1 saniye içinde doğru sonuçlar verir:
@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.
Bunu gerçekten araştırmak ve WMI'da gerçek bir göz atmak zorundaydım.
Bence en iyi seçenek bu PowerShell dizesini kullanmak
(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType
Bu, eski Windows 2003 ve XP ile bile çalışır
Cevap şunlardan biri olacak
x64 tabanlı PC
Ya da bazı eski moda cmd araçlarına dönüyorsanız
wmic computersystem get systemtype
Bu ideal bir yanıt olmasa da systeminfo.exe
ve sistem türünü, yani 32 bit veya 64 bit'i belirlemede tercih ettiğiniz yöntem olsa da systeminfo.exe
, işini bitirmek için beklemek istemiyorsanız, bu çözüm biraz daha hızlı çalışır.
Komuta:
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
Ayrıca kadar geriye Windows 95 gibi sistem sürümlerini işletim kontrol edebilirsiniz dize kayıt sorguya doğru değişikliklerle ve arama systeminfo.exe
daha kesin ve sorgulama doğru yoldur, reg.exe query
daha hızlı ve daha geriye uyumludur.
reg query "HKLM\[..as before..]\Version" /v BuildLabEx
Yöntem 1:
( PROCESSOR_ARCHITECTURE
ve ile iki aşamalı doğrulama 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"
)
Yöntem 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"
Kaynak: /superuser//a/293143/249349
WMI arabirimini kullanarak Komut İstemi altında. Komut İstemi'ni Yönetici olarak açın ve yazın wmic OS get OSArchitecture
ve tuşuna basın.Enter
systeminfo | find "System type"
Capitol T döner bir şey.