Як визначити, чи є в моїй системі 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

Дякую за відповідь, але я шукаю команду командного рядка, яка дає відповідь у командному рядку, я не можу використовувати інформацію пакетним способом, коли спливаюче вікно повідомлень.
Домінік

Перевірте версію cmd.exe, вона найпростіша і підтримується принаймні з XP. Є питання про це.
KeyWeeUsr

2
версії Google cmd, кожен os має різний номер версії, ви можете перевірити це, і вам не потрібен зайвий довгий сценарій чи інша програма - тут
KeyWeeUsr

5
Просто введіть ver. Наприклад, в моїй системі Windows 7 я отримую "Microsoft Windows [Версія 6.1.7601]", яка повідомляє мені, що я працюю під управлінням Windows 7 (який має номер версії 6.1 ).
Андреас Рейбранд

Відповіді:


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), який буде завантажений та відображений:

  • Версія операційної системи
  • Основна версія пакета оновлень
  • Архітектура (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, Основна версія пакета оновлень зберігається %_sp%, а архітектура зберігається в %_bits%.

Примітки:

  • Не повністю перевірений, оскільки я не маю всіх комбінацій ОС та Service Pack, щоб перевірити його.

  • forКоманда отримує лише 3 - у частину (токенов) ОС. Це буде працювати для версій для настільних ПК (якщо ви хочете відрізнити Server 2008 від інших версій, вам потрібно буде знайти інше рішення).

  • %_osбуде встановлений в одне з наступних значень: Server, Vista, 7, 8, 8.1або 10.

Приклад виводу:

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
Домінік

@DavidPostill Я перевірив пакетний файл. Я думаю, що це потрібно pauseперед тим, endlocalщоб дати користувачеві можливість прочитати вихід до закриття вікна. Це випливає і для вас?
Матвій

1
@Matthew Я думаю, що очікується, що якась інша система буде запускати пакетний файл і фіксувати його вихід (або він буде викликаний вручну з існуючого вікна командного рядка).
TripeHound

Пауза @mathew не потрібна для запуску із запиту cmd. Відповідь - показати техніку, а не відповідати всім сценаріям.
DavidPostill

1
@mathew відкрийте підказку cmd, де ви зберегли файл і введіть getos
DavidPostill

35

Я не можу повірити в це довго і жодної верховної команди

C:\>ver

Microsoft Windows [Version 10.0.10586]

C:\>

Він працює в переадресаціях, щоб ви могли це зробити

ver | find "Version 10."

Але зазвичай слід писати "для цієї та всіх майбутніх версій", щоб вам було краще перерахувати попередні.


FYI verце НЕ працює в PowerShell. Це CMDспецифічно.
Келтарі

3
@Keltari Але iex "ver"так!
Бен 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

системна інформація

отримує багато корисних відомостей, таких як Операційна система, Тип системи (32/64 біт) і так довго:

введіть тут опис зображення


Так, я б systeminfoтакож рекомендував . Як видно з зображення вище, воно відображатиме вашу операційну систему, а також іншу інформацію, яка вам може знадобитися.
Матвій

3
Дякуємо за швидку відповідь. systeminfoДійсно дає інформацію, яку я шукаю (звідси підсумок), але це займає досить багато часу (на моєму ПК це займає більше 15 секунд). Тому я обрав wmicрішення, знайдене в наступній відповіді.
Домінік

1
Це я прошу людей бігати, коли мені потрібно дізнатися ОС / версію, на якій вони працюють:cmd /c systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
Андрій Савіних

1
Вихід системи info залежить від мови, тому досить марний, якщо ви хочете виконувати його в більш масштабному масштабі
Стефан

1

Я не маю досвіду з InstallAnywhere, але є два варіанти, щоб побачити, яка ОС встановлена ​​за допомогою командного рядка.

  1. Використання Cmd

    systeminfo.exe
    

    Використовуючи команду systeminfo.exe, ви можете побачити результат під полем OS Name. Це може дати вам більше інформації, ніж вам потрібно.

    Більше інформації про цю команду можна знайти в Microsoft TechNet .

  2. Powershell

    Крім того, ви можете використовувати наступний скрипт Powershell, який поверне точну інформацію, яку ви хочете.

    Get-CimInstance Win32_OperatingSystem | Select-Object  Caption | ForEach{ $_.Caption }
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.