Определение текущей версии Windows.




Так же, как и в предыдущем примере, для определения версии операционной системы в процессе выполнения командного файла, можно воспользоваться поиском определенных фрагментов текста в результатах выполнения команд, отображающих сведения о системе. Например, во всех операционных системах семейства Windows(и даже в DOS) существует специальная команда VER, предназначенная для отображения сведений о версии ОС. В результате выполнения команды, например, в среде Windows XP, отображается текст:

MicrosoftWindows XP [Версия 5.1.2600]

В среде Windows 7, текст отличается:

MicrosoftWindows [Version 6.1.7600]

В среде Windows 10:

MicrosoftWindows [Version 10.0.14393]

Таким образом, результат выполнения команды VER в среде разных версий Windows, всегда содержит определенный текст, характерный только для данной ОС, и задача определения версии решается довольно просто:

@echo off

setcurr_OS=

REM

ver | find /i "5.0"

if %errorlevel% == 0 set curr_OS=Windows 2000

REM

ver | find /i "5.1"

if %errorlevel% == 0 set curr_OS=Windows XP

REM

ver | find /i "5.2.3"

if %errorlevel% == 0 set curr_OS=Windows Server 2003

REM

ver|find /i "6.0"

if %errorlevel% == 0 set curr_OS=Windows Vista

REM

ver | find /i "6.1">nul

if %errorlevel% == 0 set curr_OS=Windows 7

REM

if "%curr_OS%"=="" set curr_OS=Unknown

echo Текущая версия ОС - %curr_OS%

 

Можно также воспользоваться более информативным выводом команды NET CONFIG WORKSTATION. При выполнении в среде Windows XP вывод команды представляет собой следующий текст:

Имя компьютера \\COMP1

Полное имя компьютера COMP1.Mydomain

Имя пользователя USER2

 

Активная рабочая станция на

NetbiosSmb (000000000000)

NetBT_Tcpip_{F53DEAF8-0AF5-4875-B565-8ED55C594769} (000D87009D28)

 

Версия программы Windows 2002

 

Домен рабочей станции Mydomain

DNS-имя домена рабочей станции Mydomain

Домен входа Mydomain

 

Интервал ожидания открытия COM-порта (с) 0

Отсчет передачи COM-порта (байт) 16

Таймаут передачи COM-порта (мс) 250

Команда выполнена успешно.

 

Для среды Windows 7 результат выполнения команды выглядит так:

Имя компьютера \\COMP1

Полное имя компьютера COMP1.Mydomain

Имя пользователя user2

 

Активная рабочая станция на

NetBT_Tcpip_{F53DEAF8-0AF5-4875-B565-8ED55C594769} (000D87009D28)

 

Версия программы Windows 7 Professional

 

Домен рабочей станции Mydomain

Домен входа Mydomain

 

Интервал ожидания открытия COM-порта (с) 0

Отсчет передачи COM-порта (байт) 16

Таймаут передачи COM-порта (мс) 250

Команда выполнена успешно.

 

Как видим, строка Версия программы... тоже может быть использована для определения версии Windows, в среде которой выполняется командный файл. Кроме того, в результатах выполнения команды NET CONFIG WORKSTATION для серверных версий Windows всегда присутствует слово Server.

@echo off

setcurr_OS=

REM

netconfig workstation | find /i "Windows 2000"

if %errorlevel% == 0 set curr_OS=Windows 2000

REM

netconfig workstation | find /i "Windows 2002"

if %errorlevel% == 0 set curr_OS=Windows XP

REM

netconfig workstation | find /i "Server 2003"

if %errorlevel% == 0 set curr_OS=Windows Server 2003

REM

netconfigworkstation|find /i "Windows Vista"

if %errorlevel% == 0 set curr_OS=Windows Vista

REM

netconfig workstation | find /i "Windows 7">nul

if %errorlevel% == 0 set curr_OS=Windows 7

REM Плюспоискпо "Professional"

netconfig workstation | find /i "Версияпрограммы" | find "Professional"

iferrorlevel 0 if not errorlevel 1 set curr_OS=Windows 7 PRO

REM Есливерсиянеизвестна:

if "%curr_OS%"=="" set curr_OS=Unknown

echo %curr_OS%

 

Кроме рассмотренных способов можно применить еще множество, в том числе, используя утилиту редактирования реестра в командной строке reg.exe. На пример:

RegQuery "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V ProductName - отобразить содержимое параметра реестра с названием Windows. Пример отображаемой информации при выполнении команды в среде Windows 10 Pro:

ProductName REG_SZ Windows 10 Pro

Результат для случая Windows XP Professional:

ProductName REG_SZ MicrosoftWindows XP

Имя параметра ProductName и тип данных REG_SZ можно не отображать, выделив только подстроку с названием системы с помощью FOR:

@Echo Off

For /F "Tokens=2* Delims= " %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V ProductName^|Find "REG_SZ"') Do Set OS1=%%B

@Echo %OS1%

 

При выполнении данного командного файла будет отображаться только название ОС Windows.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-22 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: