วิธีที่ดีที่สุดและเร็วที่สุดในการตรวจสอบว่าคุณใช้ Windows Server รุ่น 32 หรือ 64 บิตจากบรรทัดคำสั่งคืออะไร
(ติดตั้ง Cygwin แล้ว)
วิธีที่ดีที่สุดและเร็วที่สุดในการตรวจสอบว่าคุณใช้ Windows Server รุ่น 32 หรือ 64 บิตจากบรรทัดคำสั่งคืออะไร
(ติดตั้ง Cygwin แล้ว)
คำตอบ:
วิธีที่เร็วกว่าเล็กน้อยคือการตรวจสอบว่ามีไดเรกทอรี% 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 / ฯลฯ )
เกี่ยวกับ:
echo %PROCESSOR_ARCHITECTURE%
สิ่งนี้จะส่งคืนx86ในระบบ 32 บิตและAMD64 (หรือIA64 ) บนระบบ 64 บิต
Program Files (x86)
ไดเรกทอรีขณะที่คนอื่นโพสต์ คุณอาจจะยังตรวจสอบสำหรับการดำรงอยู่ของ%PROGRAMFILES(X86)%
ตัวแปรสภาพแวดล้อม (ถ้ามันไม่ได้อยู่แล้วคุณจะอยู่บนเครื่อง x86)
systeminfo
มันจะแสดงรายการค่อนข้างน้อยประมาณ 10 ช่องด้านล่างมีหนึ่งที่เรียกว่าประเภทระบบ นี่จะบอกคุณว่ามันคือ x86 หรือ x64
systeminfo | find /I "System type"
นี่ขึ้นอยู่กับสถานที่และ ช้า
echo %PROCESSOR_ARCHITECTURE%
สังเกตว่ามัน 86 xcmd.exe
32 บิต
วิธีที่ถูกต้อง:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
วิธีอื่นในการตรวจสอบด้วยแบบสอบถาม WMI:
PowerShell:
(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คุณสามารถอ่านได้โดยตรงจากรีจิสทรี (ไมโครซอฟท์ทำไม่น้อยกว่าสองในความผิดพลาดที่สำคัญ ):
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Microsoft ยังแนะนำให้อ่านที่เก็บข้อมูลฮาร์ดแวร์จากรีจิสทรี:
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.
ฉันต้องขุดลงไปในสิ่งนี้และมีลักษณะที่แท้จริงใน WMI
ตัวเลือกที่ดีที่สุดในความคิดของฉันคือการใช้สตริง PowerShell นี้
(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType
สิ่งนี้สามารถใช้งานได้กับ Windows 2003 และ XP รุ่นเก่า
คำตอบจะเป็นหนึ่งใน
พีซีที่ใช้ x64
หรือถ้าเปลี่ยนกลับเป็นเครื่องมือ cmd แบบเก่า ๆ
wmic computersystem get systemtype
แม้ว่านี่ไม่ใช่คำตอบที่เหมาะสมและ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"
แหล่งที่มา: /superuser//a/293143/249349
ใช้ส่วนต่อประสาน WMI ภายใต้พรอมต์คำสั่ง เปิดพรอมต์คำสั่งในฐานะผู้ดูแลระบบแล้วพิมพ์wmic OS get OSArchitecture
และกดEnter
systeminfo | find "System type"
Capitol T ไม่ได้ทำอะไรเลย