Apa cara terbaik dan tercepat untuk mendeteksi apakah Anda menjalankan Windows Server versi 32 atau 64-bit dari baris perintah?
(Cygwin diinstal)
Apa cara terbaik dan tercepat untuk mendeteksi apakah Anda menjalankan Windows Server versi 32 atau 64-bit dari baris perintah?
(Cygwin diinstal)
Jawaban:
Cara yang sedikit lebih cepat adalah memeriksa keberadaan direktori% ProgramFiles (x86)%. Jika ada maka Anda menjalankan 64-bit, jika tidak ada maka Anda menjalankan 32-bit.
Satu liner cepat:
if exist "%ProgramFiles(x86)%" echo 64-bit
Itu akan menampilkan 64-bit
jika direktori ada. Itu akan gagal, meskipun, jika itu tidak ada sebagai variabel tetapi itu memang ada sebagai direktori (sebagai% ProgramFiles (x86)%).
Anda juga dapat menggunakan alat temukan untuk memiliki cara yang lebih akurat untuk menentukan bitness.
set | find "ProgramFiles(x86)"
atau menggunakan systeminfo
perintah sebelumnya
systeminfo | find /I "System type"
(termasuk /I
untuk bekerja di XP / 2003/2008 / dll)
Bagaimana tentang:
echo %PROCESSOR_ARCHITECTURE%
Ini akan mengembalikan x86 pada sistem 32-bit dan AMD64 (atau IA64 ) pada sistem 64-bit.
Program Files (x86)
direktori sebagai orang lain yang diposting. Anda juga dapat memeriksa keberadaan %PROGRAMFILES(X86)%
variabel lingkungan (jika tidak ada, maka Anda menggunakan mesin x86).
systeminfo | find /I "System type"
Ini tergantung lokal, dan lambat .
echo %PROCESSOR_ARCHITECTURE%
Perhatikan, itu x86 dalam 32-bit cmd.exe
.
Jalan yang benar:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
Cara lain untuk memeriksa dengan kueri WMI:
PowerShell:
(gwmi win32_computersystem).SystemType
CMD:
wmic OS get OSArchitecture
Diambil dari sini: http://www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html
Ada banyak cara untuk memeriksa arsitektur prosesor di Windows:
Cara tercepat, termudah, dan paling kompatibel untuk memeriksa arsitektur prosesor di setidaknya Windows 2000 dan yang lebih tinggi adalah dengan memeriksa PROCESSOR_ARCHITECTURE
variabel lingkungan :
echo %PROCESSOR_ARCHITECTURE%
Namun, ini dapat memberikan hasil yang berbeda, tergantung pada cara di mana command-prompt dibuka. Untuk menghindari "hasil yang tidak terduga" karena WoW64 , Anda dapat membacanya langsung dari registri (Microsoft membuat tidak kurang dari dua kesalahan ketik di kunci ):
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Microsoft juga menyarankan untuk membaca penyimpanan informasi perangkat keras dari registri:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier
Anda juga dapat memeriksa keberadaan versi Program Files
direktori x86 (atau variabel lingkungan yang menunjukkannya) karena hanya akan ada pada sistem 64-bit. Berbeda dengan PROCESSOR_ARCHITECTURE
variabel, ini tidak tergantung pada cara command prompt dijalankan karena direktori ada (atau tidak) terlepas dari bagaimana prompt dibuka:
::via env-var
if not defined ProgramFiles(x86) echo 32-bit
::via file-system
if not exist "%systemdrive%\Program Files (x86)" echo 32-bit
Metode-metode ini dapat digabungkan dalam satu file batch (misalnya, cpuinfo.bat
) dan menyediakan cara cepat dan bagus untuk memeriksa sistem dari command-prompt standar Windows NT tanpa perlu menggunakan program atau kerangka kerja lain.
Ini diuji pada sistem 32-bit dan Intel 64-bit (silakan uji pada AMD64), memberikan hasil yang benar dalam <1 detik:
@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.
Saya benar-benar harus menggali ini dan melihat-lihat di WMI.
Pilihan terbaik menurut saya adalah cukup menggunakan string PowerShell ini
(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType
Ini bahkan bekerja dengan Windows 2003 dan XP lama
Jawabannya adalah salah satunya
PC berbasis x64
Atau jika kembali ke beberapa alat cmd kuno
wmic computersystem get systemtype
Meskipun ini bukan jawaban yang ideal, dan systeminfo.exe
harus menjadi metode pilihan Anda untuk menentukan jenis sistem, yaitu 32-bit atau 64-bit, solusi ini berjalan sedikit lebih cepat jika Anda tidak ingin menunggu untuk systeminfo.exe
menyelesaikan pekerjaannya.
Perintah:
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
Dengan perubahan yang benar pada kueri registri dan string pencarian Anda juga dapat memeriksa versi sistem operasi sejauh Windows 95. systeminfo.exe
lebih tepat dan cara kueri yang benar, reg.exe query
lebih cepat dan lebih kompatibel ke belakang.
reg query "HKLM\[..as before..]\Version" /v BuildLabEx
Metode 1:
(Validasi dua langkah dengan PROCESSOR_ARCHITECTURE
dan 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"
)
Metode 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"
sumber: /superuser//a/293143/249349
systeminfo | find "System type"
Capitol T tidak mengembalikan apa pun.