ฉันจะตรวจสอบได้อย่างไรว่าระบบของฉันคือ Windows 10 โดยใช้บรรทัดคำสั่ง? [ซ้ำ]


32

คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:

ฉันกำลังทำงานกับ InstallAnywhere โปรแกรมเก่าสำหรับสร้างตัวติดตั้ง ฉันต้องการติดตั้งไฟล์เฉพาะในกรณีของ Windows XP และ Windows Vista

เนื่องจากข้อ จำกัด ของ InstallAnywhere ทำให้ไม่สามารถทำได้ ฉันสามารถตัดสินใจที่จะลบไฟล์ได้เมื่อติดตั้งแล้วตามกฎเท่านั้น

ภายในกฎนั้นฉันสามารถตรวจสอบแพลตฟอร์มที่ฉันใช้งานอยู่ซึ่งทำให้ฉันสามารถตรวจสอบ Windows XP, Windows Vista, Windows 7 และอื่น ๆ แต่ไม่ใช่สำหรับ Windows 10 ฉันไม่สามารถพูดว่า "ดำเนินการสิ่งนี้ การกระทำเมื่อระบบไม่ใช่ XP หรือ Vista "ดังนั้นฉันต้องพูดว่า" ดำเนินการนี้กับทุกแพลตฟอร์มที่ไม่ใช่ XP หรือ Vista "

อย่างไรก็ตามฉันสามารถเปิดใช้คำสั่งบรรทัดคำสั่งและจับผลลัพธ์ดังนั้นนี่คือคำถามของฉัน: มีคำสั่งที่ฉันสามารถใช้ในการพิจารณาว่าฉันกำลังทำงานกับระบบ Windows 10 หรือไม่?


winverจะปรากฏขึ้นกล่องโต้ตอบเกี่ยวกับ Windows หากพิมพ์เป็น cmd หรือ Start มันจะใช้ได้ไหม อีกทางเลือกหนึ่ง - stackoverflow.com/questions/1792740/…
Tetsujin

ขอบคุณสำหรับการตอบกลับ แต่ฉันกำลังมองหาคำสั่งบรรทัดคำสั่งที่ให้คำตอบในบรรทัดคำสั่งฉันไม่สามารถใช้ข้อมูลในลักษณะแบตช์เมื่อกล่องข้อความปรากฏขึ้น
Dominique

ตรวจสอบรุ่น cmd.exe ว่าเป็นรุ่นที่ง่ายที่สุดและรองรับอย่างน้อยที่สุดนับตั้งแต่ XP มีคำถามเกี่ยวกับเรื่องนี้
KeyWeeUsr

2
เวอร์ชัน google cmd แต่ละระบบปฏิบัติการมีหมายเลขเวอร์ชันที่แตกต่างกันคุณสามารถตรวจสอบได้และคุณไม่จำเป็นต้องใช้สคริปต์ตัวยาวหรือโปรแกรมอื่น - ที่นี่
KeyWeeUsr

5
verเพียงพิมพ์ ตัวอย่างเช่นในระบบ Windows 7 ของฉันฉันได้รับ "Microsoft Windows [เวอร์ชัน 6.1.7601]" ซึ่งบอกฉันว่าฉันกำลังใช้งาน Windows 7 (ซึ่งมีหมายเลขรุ่น 6.1 )
Andreas Rejbrand

คำตอบ:


54

มีคำสั่งให้พิจารณาหรือไม่ว่าฉันกำลังทำงานกับระบบ Windows 10 อยู่หรือไม่?

wmicคุณสามารถใช้

คำสั่งต่อไปนี้จะส่งคืนเวอร์ชัน Windows

wmic os get Caption | findstr /v Caption

ตัวอย่างผลลัพธ์:

F:\test>wmic os get Caption | findstr /v Caption
Microsoft Windows 7 Home Premium

หากคุณต้องการข้อมูลเพิ่มเติมคุณสามารถใช้ไฟล์แบตช์ต่อไปนี้ (GetOS.cmd) ซึ่งจะดึงข้อมูลและแสดงผล:

  • เวอร์ชันระบบปฏิบัติการ
  • Service Pack เวอร์ชันหลัก
  • สถาปัตยกรรม (64 หรือ 32 บิต)
@echo off
setlocal
setlocal enabledelayedexpansion
set _os=
set _sp=
rem use findstr to strip blank lines from wmic output
rem get OS
for /f "usebackq skip=1 tokens=3" %%i in (`wmic os get caption ^| findstr /r /v "^$"`) do (
  set "_os=%%i"
  )
rem get Service Pack
for /f "usebackq skip=1 tokens=*" %%i in (`wmic os get ServicePackMajorVersion ^| findstr /r /v "^$"`) do (
  set "_sp=%%i"
  )
rem get Architecture
for /f "usebackq skip=1 tokens=*" %%i in (`wmic OS get OSArchitecture ^| findstr /r /v "^$"`) do (
  set "_bits=%%i"
  )
echo Operating System Version: %_os%
echo Service Pack Major Version: %_sp%
echo Architecture: %_bits%
endlocal

ระบบปฏิบัติการเวอร์ชันถูกเก็บไว้ใน%_os, Service Pack เมเจอร์เวอร์ชันถูกเก็บไว้ในและสถาปัตยกรรมถูกเก็บไว้ใน%_sp%%_bits%

หมายเหตุ:

  • ทดสอบไม่สมบูรณ์เนื่องจากฉันไม่มีทั้ง OS และ Service Pack รวมกันเพื่อทดสอบ

  • forคำสั่งดึงข้อมูลเฉพาะส่วนที่ 3 (โทเค็น) ของ OS สิ่งนี้จะใช้ได้กับเวอร์ชั่นเดสก์ท็อป (หากคุณต้องการแยก Server 2008 ออกจากเวอร์ชั่นอื่นคุณจะต้องหาวิธีแก้ไขอื่น)

  • %_osจะถูกตั้งค่าใดค่าหนึ่งต่อไปนี้: Server, Vista, 7, 8, หรือ8.110

ตัวอย่างผลลัพธ์:

F:\test>GetOS
Operating System Version: 7
Service Pack Major Version: 1
Architecture: 64-bit

F:\test>

อ่านเพิ่มเติม


2
หลังจากการทดสอบฉันได้ตัดสินใจใช้คำสั่งต่อไปนี้:wmic os get Caption | findstr /V Caption
Dominique

@DavidPostill ฉันได้ทำการทดสอบไฟล์แบตช์แล้ว ฉันคิดว่ามันต้องมีpauseก่อนendlocalเพื่อให้ผู้ใช้มีโอกาสอ่านผลลัพธ์ก่อนปิดหน้าต่าง สิ่งนั้นตามคุณมาด้วยหรือไม่?
Matthew

1
@Matthew ฉันคิดว่าความคาดหวังคือระบบอื่น ๆ จะเรียกใช้ไฟล์แบทช์และจับเอาท์พุท (หรือมันจะถูกเรียกด้วยตนเองจากหน้าต่างพรอมต์คำสั่งที่มีอยู่)
TripeHound

@ หยุดชั่วคราวไม่จำเป็นต้องเรียกใช้จากพรอมต์คำสั่ง คำตอบคือการแสดงเทคนิคแทนที่จะเหมาะกับทุกสถานการณ์
DavidPostill

1
@mathew เปิดพรอมต์คำสั่งที่คุณบันทึกไฟล์และพิมพ์ getos
DavidPostill

35

ฉันไม่อยากเชื่อในคำสั่งที่ยาวนานและไม่มีคำสั่ง

C:\>ver

Microsoft Windows [Version 10.0.10586]

C:\>

มันทำงานในการเปลี่ยนเส้นทางเพื่อให้คุณสามารถทำได้

ver | find "Version 10."

แต่โดยปกติคุณควรเขียน "สำหรับสิ่งนี้และเวอร์ชั่นในอนาคตทั้งหมด" ดังนั้นคุณควรแจกแจงให้ดีกว่าที่ผ่านมา


FYI verไม่ได้ทำงานใน PowerShell มันมีความCMDเฉพาะเจาะจง
Keltari

3
@Keltari แต่iex "ver"ทำ!
Ben N

ผลลัพธ์ของverอาจทำให้เข้าใจผิดเล็กน้อย บนเครื่องที่ฉันนั่งอยู่ตอนนี้มันกลับมาMicrosoft Windows [Version 6.1.7601]แล้ว แต่ผมค่อนข้างแน่ใจว่ามันรัน Windows 7 ไม่ได้ใช้ Windows 6.
ฟิลิปป์

@Philipp ใช่ Windows 7 และ 8 เป็นรุ่น "จริงๆ" แพตช์ของ Vista, 6.1 และ 6.2 ตามลำดับ; ชนรุ่นใหญ่คือการตลาดอย่างเคร่งครัด ฉันไม่ทราบว่าการเปลี่ยนแปลงใน Windows 10 นั้นสำคัญพอที่จะรับประกันการชนรุ่นใหญ่หรือไม่ (จากมุมมองของวิศวกรรมซอฟต์แวร์อนุกรมซอฟต์แวร์รุ่นใหญ่ ๆ ควรถูกชนเพียงเพื่อบ่งบอกถึงการหยุดการทำงานร่วมกันแบบย้อนหลังซึ่งตามมาว่าเวอร์ชันหลักขนาดใหญ่ไม่ดีโชคไม่ดีฝ่ายการตลาดชอบตัวเลขจำนวนมาก)
zwol

1
@Philipp - ง่ายต่อการค้นหาแผนที่จากหมายเลขเวอร์ชันไปยังชื่อทางการตลาดเช่นที่นี่
davidbak

18

systeminfo

รับ infos ที่มีประโยชน์มากมายเช่นระบบปฏิบัติการ, ประเภทระบบ (32/64 บิต) และนาน:

ป้อนคำอธิบายรูปภาพที่นี่


ใช่ฉันจะแนะนำsysteminfoด้วย ดังที่คุณเห็นจากภาพด้านบนมันจะแสดงระบบปฏิบัติการของคุณเช่นเดียวกับข้อมูลอื่น ๆ ที่คุณอาจต้องการ
Matthew

3
ขอบคุณสำหรับการตอบกลับอย่างรวดเร็ว systeminfoแน่นอนให้ข้อมูลที่ฉันกำลังมองหา (ดังนั้น upvote) แต่ใช้เวลาค่อนข้างนาน (บนพีซีของฉันใช้เวลามากกว่า 15 วินาที) ดังนั้นฉันเลือกใช้wmicวิธีแก้ปัญหาที่พบในคำตอบต่อไป
Dominique

1
นี่คือสิ่งที่ฉันขอให้ผู้คนทำงานเมื่อฉันต้องการทราบระบบปฏิบัติการ / เวอร์ชันที่พวกเขาใช้งานอยู่:cmd /c systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
Andrew Savinykh

1
การส่งออกของ systeminfo ขึ้นอยู่กับภาษาดังนั้นจึงค่อนข้างไร้ประโยชน์หากคุณต้องการให้ ot รันในขนาดที่ใหญ่ขึ้น
Stephan

1

ฉันไม่มีประสบการณ์ใด ๆ กับ InstallAnywhere แต่มีสองตัวเลือกเพื่อดูว่ามีการติดตั้งระบบปฏิบัติการใดโดยใช้บรรทัดคำสั่ง

  1. ใช้ Cmd

    systeminfo.exe
    

    การใช้คำสั่งคุณสามารถเห็นผลภายใต้สนามsysteminfo.exe OS Nameสิ่งนี้อาจให้ข้อมูลมากกว่าที่คุณต้องการ

    ข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งนี้สามารถพบได้ในMicrosoft TechNet

  2. Powershell

    หรือคุณสามารถใช้สคริปต์ Powershell ต่อไปนี้ซึ่งจะส่งคืนข้อมูลที่แน่นอนที่คุณต้องการ

    Get-CimInstance Win32_OperatingSystem | Select-Object  Caption | ForEach{ $_.Caption }
    
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.