บรรทัดคำสั่งในการตรวจสอบว่าระบบปฏิบัติการที่ใช้ Windows รุ่น 32 บิตหรือ 64 บิตเป็นเท่าไหร่?
บรรทัดคำสั่งในการตรวจสอบว่าระบบปฏิบัติการที่ใช้ Windows รุ่น 32 บิตหรือ 64 บิตเป็นเท่าไหร่?
คำตอบ:
บรรทัดคำสั่ง:
systeminfo | findstr /I type:
เอาท์พุทตัวอย่าง:
ประเภทของระบบ: พีซีที่ใช้ X86
X86 หมายถึงระบบ 32 บิตในตัวอย่างนี้
( /I
พารามิเตอร์บ่งชี้ว่าการค้นหาแบบคำนึงถึงขนาดตัวพิมพ์ )
systeminfo | findstr /I typ:
เป็นรายการทั้งหมดSystemtyp: x64-based PC
systeminfo | findstr /C:"System Type"
ดึงข้อมูลเดียวกันมาด้วยเช่นกัน แต่ฉันเดาว่าข้อความที่ยาวกว่านี้จะเป็นที่ต้องการน้อยกว่า
ฉันไม่สามารถแนบคำตอบไปยังโพสต์อื่นได้ที่นี่ การไพพ์ผลลัพธ์ของsysteminfo
- กำลังใช้เวลาค่อนข้างมากและเขียนไปยังคอนโซลดังนั้นจึงไม่ใช่ทางออกที่ดีที่สุดสำหรับไฟล์คำสั่ง (สคริปต์แบทช์ - อย่างไรก็ตามคุณต้องการเรียกมันว่า B-)
แม้จะมีfindstr
- มันไม่พบสิ่งนี้ในหน้าต่างภาษาอื่น ในภาษากลางยุโรป win7 ระบบปฏิบัติการก็จะส่งคืน ... "ตาม X86" ... ในผลลัพธ์ แต่มีบางอย่างที่ "พิมพ์" กำลังมองหา ฉันไม่แน่ใจว่ามันสามารถแตกต่างกันไปในภาษาอื่น ๆ ของระบบปฏิบัติการ
อาจเป็นวิธี "wmic" น่าเชื่อถือที่สุด - มันถามระบบปฏิบัติการโดยตรง
วิธีแก้ปัญหาด่วนอื่น ๆ ที่เป็นไปได้คือการตรวจสอบตัวแปร (อย่างน้อยก็ทำงานกับ win7 ที่ฉัน)
echo %PROCESSOR_ARCHITECTURE%
ตกลง - มันค่อนข้างนานที่จะจำได้ แต่เป็นไปได้ที่set | findstr ARCH
สามารถจำได้
แน่นอน - wmic
บางสามารถปรับเปลี่ยนตัวแปรระบบเพื่อไม่ที่น่าเชื่อถือมากกว่า แต่สามารถใช้งานได้อย่างรวดเร็ว
ฉันหวังว่าฉันสามารถช่วยใครบางคนออก
มีหลายวิธีในการตรวจสอบสถาปัตยกรรมโปรเซสเซอร์ภายใต้ Windows:
วิธีที่เร็วที่สุดง่ายที่สุดและเข้ากันได้ดีที่สุดในการตรวจสอบสถาปัตยกรรมโปรเซสเซอร์ในอย่างน้อย Windows 2000ขึ้นไปคือการตรวจสอบPROCESSOR_ARCHITECTURE
ตัวแปรสภาพแวดล้อม :
echo %PROCESSOR_ARCHITECTURE%
อย่างไรก็ตามสิ่งนี้สามารถให้ผลลัพธ์ที่แตกต่างกันขึ้นอยู่กับวิธีเปิดพร้อมท์คำสั่ง เพื่อหลีกเลี่ยงการ"ผลลัพธ์ที่ไม่คาดคิด" เนื่องจาก WoW64คุณสามารถอ่านได้โดยตรงจากรีจิสตรี (Microsoft ได้พิมพ์ตัวอักษรไม่น้อยกว่าสองตัวในคีย์ ):
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.
ฉันไม่สามารถหาOSArchitecture
คุณสมบัติ (ตามคำตอบของ phoebus) ดังนั้นฉันขอแนะนำให้ใช้SystemType
คุณสมบัติComputerSystem
แทน
เรียกใช้คำสั่งwmic computersystem get systemtype
จากพรอมต์คำสั่งให้
C:\Windows\system32>wmic computersystem get systemtype
SystemType x64-based PC
บรรทัดคำสั่งปกติ: wmic OS get OSArchitecture
(IIRC)
PowerShell: (gwmi win32_computersystem).SystemType
Invalid Query
เข้า XP
หากคุณอ้างถึง windows OS คุณสามารถใช้ vbscript กับ WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery("SELECT * FROM Win32_Processor")
For Each objProcessor In colSettings
Wscript.Echo "System Type: " & objProcessor.Architecture
Wscript.Echo "Processor: " & objProcessor.Description
Wscript.Echo "Address Width: "& objProcessor.AddressWidth
Next
คุณสามารถค้นหาข้อมูลโดยใช้ "ข้อมูลระบบ"
Start-> Run -> winmsd.exe
ภายใต้ "สรุประบบ" / ประเภทระบบคุณสามารถค้นหาเวอร์ชั่นของระบบปฏิบัติการ
X64 -> 64 บิต
X86 -> 32 บิต
คำตอบของ JohnT ใน GUI;)
ไปที่ Start » Run cmd
แล้วพิมพ์ ตอนนี้คุณจะอยู่ในพร้อมรับคำสั่ง คุณสามารถพิมพ์ systeminfo
จากนั้นกด Enter ใช้เวลาสองสามวินาทีในการรับข้อมูลระบบทั้งหมดของคุณ คุณสามารถค้นหาข้อมูลโปรเซสเซอร์ได้เช่นกัน
Processor(s): 1 Processor(s) Installed.
[01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
C: \ Documents and Settings \ mr85464> systeminfo
OS Name: Microsoft Windows XP Professional
OS Version: 5.1.2600 Service Pack 3 Build 2600
OS Manufacturer: Microsoft Corporation
OS Configuration: Member Workstation
OS Build Type: Multiprocessor Free
Product ID: 76487-640-3658033-23932
Original Install Date: 3/16/2012, 2:03:44 PM
System Up Time: 5 Days, 21 Hours, 35 Minutes, 51 Seconds
System Manufacturer: Dell Inc.
System Model: OptiPlex 210L
System type: X86-based PC
Processor(s): 1 Processor(s) Installed.
[01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
~2992 Mhz
more
สาเหตุส่วนหนึ่งเกี่ยวกับสถาปัตยกรรมได้อย่างรวดเร็วเลื่อนปิดหน้าจอดังนั้นถ้าคุณมีบัฟเฟอร์ขนาดใหญ่พอที่คุณจะต้องเข้าไปในท่อ
รหัสง่าย ๆ ที่ฉันใช้:
:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof