ฉันจะทราบได้อย่างไรว่า Windows ของฉันเป็น 32- บิตหรือ 64- บิตโดยใช้คำสั่ง? [ซ้ำ]


79

ข้อมูลซ้ำที่เป็นไปได้:
จะทราบได้อย่างไรว่าคอมพิวเตอร์มี CPU 64 บิตหรือระบบ
ตรวจจับ Windows Server รุ่น 32/64 บิตในรุ่นCLI
OS: 32 บิตหรือ 64 บิต

ฉันจะตรวจสอบได้อย่างไรว่าระบบ Windows ของฉันเป็นแบบ 32 บิตหรือ 64 บิตจาก commandline หรือไม่

ฉันต้องการทราบความจริงของระบบปฏิบัติการไม่ใช่ฮาร์ดแวร์

คำถามนี้ใช้ได้กับบรรทัดคำสั่งเท่านั้นฉันไม่ต้องการโซลูชัน GUI ใด ๆ


1
อืมมันเศร้าที่systeminfoไม่ได้ลงรายการนี้
Tamara Wijsman

@MaQleod - โดยส่วนตัวแล้วฉันยืนยันว่าเพียงเพราะคำตอบของคุณเหมาะสมกับทั้งสองคำถามที่ไม่ซ้ำกันแน่นอนเพราะสิ่งนี้เป็นสถานการณ์ที่เฉพาะเจาะจงมากขึ้น ฉันไม่รู้ว่าคำตอบของคุณเหมาะกับ 'command line only' หรือไม่เพราะมันต้องการยูทิลิตี้เพิ่มเติม แต่ถ้าเป็นฉันฉันจะโพสต์มันเป็นคำตอบที่นี่
Shinrai

@MaQleod โดยส่วนตัวฉันจะไม่เรียกมันว่าซ้ำซ้อนเพราะเป็นการขอคำสั่งเฉพาะบรรทัดคำสั่งเฉพาะ คำถามที่คุณเชื่อมโยงนั้นมีคำตอบที่ยอมรับได้สำหรับโซลูชัน GUI
เบ็นริชาร์ดส์

1
ขอบคุณสำหรับการแก้ไข + คำตอบ ฉันเลือกคำตอบที่เหมาะสมกับสถานการณ์ของฉันมากที่สุด
ลบ

ฉันลงเอยด้วยการค้นหาว่าสำเนาใดที่ตรงกับสิ่งนี้ (โพสต์ที่เชื่อมโยงเฉพาะอ้างอิงบรรทัดคำสั่งเท่านั้นและยังให้คำตอบที่แท้จริงของฉัน.)
Shinrai

คำตอบ:


123

wmic os get osarchitectureจากคำสั่งยกระดับให้พิมพ์ ผลลัพธ์ที่ได้ค่อนข้างชัดเจนฉันคิดว่ามันจะกลับมาเป็น "32- บิต" หรือ "64- บิต"


ดูเหมือนว่าฉันจะใช้วิธีแก้ปัญหา ... ตอนนี้ฉันรู้แล้ว
James T Snell

2
หรือจะทำสิ่งเดียวกันใน Powershell ถ้าคุณอยู่บนเครื่อง W7 หรือ Windows OS อื่นที่คุณติดตั้ง PS: (gwmi win32_OperatingSystem). OSAr สถาปัตยกรรม
EBGreen

2
ไม่ทำงานที่นี่ใน Windows XP ส่งคืนข้อผิดพลาด: แบบสอบถามไม่ถูกต้อง
user606723

1
Caveat: ต้องเป็นผู้ดูแลระบบเพื่อเรียกใช้ WMIC
พัฒนา

@ user606723 - ฉันไม่มีการติดตั้ง XP สะดวกในการทดสอบ แต่ฉันไม่คิดว่า hooks WMI จะเปลี่ยนไปมากขนาดนั้น OP ไม่ได้ระบุระบบปฏิบัติการให้เป็นธรรม แต่ฉันจะต้องทดสอบตัวเอง
Shinrai

56

โปรแกรมคอนโซล systeminfo จะแสดงสิ่งนี้ คุณจะต้องมองหาบรรทัด "ประเภทระบบ:" สำหรับระบบ 32 บิตมันจะพูดว่า "พีซีที่ใช้ x86" สำหรับระบบ 64 บิตมันจะพูดว่า "พีซีที่ใช้ x64"

หรือสำหรับวิธีที่รวดเร็วกว่าคุณสามารถตรวจสอบตัวแปรสภาพแวดล้อม PROCESSOR_ARCHITECTURE ระบบ 64 บิตจะบอกว่า AMD64 และระบบ 32 บิตควรจะพูดว่า "x86" เพื่อตรวจสอบสิ่งนี้คุณสามารถสะท้อนออกมา:

echo %PROCESSOR_ARCHITECTURE%

David Wang ไปที่บล็อก MSDN ขยายHOWTOนี้: ตรวจสอบพยานกระบวนการ


สิ่งนี้ไม่แสดงประเภทโปรเซสเซอร์ แต่ไม่ใช่ประเภทระบบปฏิบัติการที่ติดตั้งหรือไม่
Shinrai

ฉันไม่คิดอย่างนั้นเพราะโหมด 32 บิตและโหมด 64 บิตเป็นโหมดที่แตกต่างกันซึ่งโปรเซสเซอร์อาจมีอยู่โปรเซสเซอร์อาจอยู่ในโหมด 32 บิตและฉันไม่คิดว่าระบบปฏิบัติการจะรู้โดยเนื้อแท้ถ้าทำได้ เปลี่ยนเป็นโหมด 64 บิต อย่างไรก็ตามมันเป็นจุดที่ดีมันเป็นสิ่งที่จะต้องมีการทดสอบ อย่างที่ฉันรู้ว่าพี่ชายของฉันมีการติดตั้ง Win 7 แบบ 32 บิตบนโปรเซสเซอร์ที่มีความสามารถ 64 บิตฉันจะขอให้เขาตรวจสอบฉัน
เบ็นริชาร์ดส์

ใช่ฉันไม่แน่ใจ (ดังนั้นการตอบสนองอย่างแน่นอน) และน่าเสียดายที่ไม่มีประโยชน์ในการตรวจสอบตัวเอง ฉันคิดว่านี่เป็นเพียงสายอักขระที่ตัวประมวลผลที่ให้มารายงานกลับโดยไม่คำนึงว่ามันทำงานอย่างไร มันจะเป็นประโยชน์ที่จะรู้ว่าแน่นอน
Shinrai

4
หากคุณเรียกใช้ระบบปฏิบัติการ 32 บิตบนระบบ 64 บิต% PROCESSOR_ARCHITECTURE% จะยังคงเป็น "x86" ในกรณีส่วนใหญ่ระบบปฏิบัติการ 64 บิตสามารถเรียกใช้โปรแกรม 32 บิตได้ แต่วิธีนี้จะไม่ทำงานในลักษณะอื่น
bobbymcr

2
ขึ้นโหวตเป็นecho% PROCESSOR_ARCHITECTURE% ทำงานได้แม้ในเชลล์คำสั่ง sql server ด้วยเช่นกันเพราะwmic os รับ osarchitectureบางครั้งมันไม่ทำงานในเชลล์คำสั่ง sql server
Durai Amuthan.H

8

คุณสามารถตรวจสอบว่า%PROGRAMFILES(x86)%ประกาศตัวแปรสภาพแวดล้อม บนระบบ 32 บิตจะไม่ถูกกำหนด ( %PROGRAMFILES%จะเป็นเท่านั้น) นี่ยังปลอดภัยกว่าเพียงแค่ตรวจสอบว่ามีไดเรกทอรีโปรแกรมไฟล์ (x86) อยู่หรือไม่เนื่องจากสามารถย้ายได้ (หรือลบได้)


วิธีแก้ปัญหาดีกว่าการตรวจสอบโฟลเดอร์ใช่ (ฉันไม่ชอบใช้วิธีแก้ปัญหา แต่ถ้าคุณกำลังจะไปนี่เป็นคนที่จะใช้)
Shinrai

จับได้ดีมาก ... ฉันมีแบตช์ที่ตรวจสอบโฟลเดอร์ แต่มันจะดูดีกว่านี้แน่ ๆ
WernerCD

1
คุณยังสามารถเปรียบเทียบ%PROGRAMFILES(x86)%และ%PROGRAMFILES%ตัวแปรเพื่อดูว่า cmd เริ่มทำงานในโหมด 32 บิตหรือ 64 บิต (เพราะบนหน้าต่าง 64 บิตคุณยังคงสามารถเรียกใช้ 32 บิต cmd ได้) ตัวอย่าง: IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32 บิต cmd (ที่ทำงานบน Windows 64 บิต ..... ) ถ้า%PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64 บิต cmd
Sam Hasler

8

ฉันเขียนแอปพลิเคชันบรรทัดคำสั่งง่ายๆที่จะบอกคุณว่าโปรเซสเซอร์และระบบปฏิบัติการของคุณเป็นแบบ 64 บิตหรือ 32 บิต

ตัวอย่างที่อ่านได้:

C:\bitchecker
The CPU is 64-bit and the OS is 32-bit

ต่อคำขอนี่คือแหล่งที่มารวบรวมโดยใช้ตัวเลือก CLI เขียนใน AutoIt

If @CPUARCH = "x86" Then
    $CPUARCH = "32-bit"
Else
    $CPUARCH = "64-bit"
EndIf

If @OSARCH = "x86" Then
    $OSARCH = "32-bit"
Else
    $OSARCH = "64-bit"
EndIf

ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)

และนี่คือตัวอย่างถ้าคุณต้องการสวิตช์สำหรับ CPU (-c) และ OS (-o):

Dim $CPUARCH, $OSARCH

If @CPUARCH = "x86" Then
    $CPUARCH = "32-bit"
Else
    $CPUARCH = "64-bit"
EndIf

If @OSARCH = "x86" Then
    $OSARCH = "32-bit"
Else
    $OSARCH = "64-bit"
EndIf

If $CmdLine[0] = 0 Then
    ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)
Else
    Select
        Case $CmdLine[1] = "-c"
            ConsoleWrite($CPUARCH)
        Case $CmdLine[1] = "-o"
            ConsoleWrite($OSARCH)
        Case Else
            ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)
    EndSelect
EndIf

1
ฉันจะดีถ้าไฟล์นั้นมาพร้อมกับแหล่งที่มา มันค่อนข้างน่าตกใจที่จะดาวน์โหลด exe ขนาดเล็กโพสต์ไปยัง mediafire และเรียกใช้
artifex

1
@artifex เพิ่มแหล่งที่มา
MaQleod

อาจเป็นเรื่องเท็จ U_U Jocking :)
Pitto

มันจะเป็นการดีหากรู้ว่า API autoit ใช้อะไรภายใน ..
606723

3

เกิดอะไรขึ้นถ้าคุณเพียงแค่ตรวจสอบการปรากฏตัวของ

% SYSTEMROOT% \ ไฟล์โปรแกรม (x86)

หรืออะไรก็ตามที่เรียกว่า


ไม่ใช่วิธีแก้ปัญหาที่ยอดเยี่ยม แต่อาจเร็วและสกปรกสำหรับปัญหาเฉพาะของคุณหรือไม่
James T Snell

คุณเอาชนะฉันในการแก้ปัญหานี้ +1 dir \Program *รูปแบบอาจจะสั้น
Tamara Wijsman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.