CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Ответить
 • Просмотры: 1
Аватара пользователя
sLiDeR-X

Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Сообщение sLiDeR-X »

Ageron, причем здесь процессор.

Насколько я понял, этот параметр показывает версию системы, а не процессора.

CMD/BAT - Батник проверяющий битность системы (32 или 64 bit)???
Аватара пользователя
NoIZz

Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Сообщение NoIZz »

Точнее тип системы

и про какие 64-бит процессоры идет речь? На Итаниумы 32-бит винду на поставишь (%PROCESSOR_ARCHITECTURE%=IA64)

во всех остальных случаях зависит от разрядности ОС



ultra_fs, в русской 7ке ver возвращает Microsoft Windows [Version 6.1.7601]
Аватара пользователя
NoIZz

Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Сообщение NoIZz »

Определение языка

тк не на всех русских через VER получается определить

В висте и 2008 не проверял - нет под рукой



for /f "tokens=4" %%a in ('chcp') do set CP=%%a

chcp 1251 >nul 2>nul

ver | find "Version">nul && set lng=eng

::Это например для Русской 7ки Professional которая стоит у меня на ноуте - ленгвич паков никаких нет - честно купленная в 2011 коробочная версия

set /? | find "переменных среды">nul && set lng=rus

::Это в русском XP и 2003.

ver | find "Версия">nul && set lng=rus

chcp %CP% >nul 2>nul



переключение кодовой страницы - что бы командная find воспринял кодировку 1251

запоминание - что бы по выходу вернуть ее взад
Аватара пользователя
Lucretius

Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Сообщение Lucretius »

По выше приведённым примерам собрал скрипт. Скрипт проверил(рабочий) на Win XP home и Win 7. К сожалению не могу проверить на других осях.

Обращаюсь к специалистам с просьбой проверить скрипт на грамотность написания, и по возможности внести поправки (необходимо, чтобы скрипт работал на всей NT-линейке включая x64):



Код:

Код: Выделить всё

@echo off
Cls
Echo Сейчас будет создана новая задача для "Prog.exe".
Pause
Rem Наличие установленной программы:
If exist "%ProgramFiles%\Prog\Prog.exe" GoTo More
If not exist "%ProgramFiles%\Prog\Prog.exe" GoTo Error
:Error
Cls
Echo Файл "%ProgramFiles%\Prog\Prog.exe" не найден!
Echo Продолжение невозможно.
Pause
Exit
Rem Название операционной системы:
:More
For /F "Tokens=2* Delims=	 " %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V ProductName^|Find "REG_SZ"') Do Set OS1=%%B
Rem Версия операционной системы:
For /F "Tokens=2 Delims=[]" %%i In ('ver') Do (
 For /F "Tokens=2,3 Delims=. " %%a In ("%%i") Do Set version=%%a.%%b
)
If "%version%"=="5.0" GoTo End
If "%version%"=="5.1" GoTo End
If "%version%"=="5.2" GoTo End
If "%version%"=="6.0" GoTo Task
If "%version%"=="6.1" GoTo Task
If "%version%"=="6.2" GoTo Warning
:End
Cls
Echo На %OS1% отсутствует
Echo необходимость в создания данной задачи...
Pause
Exit
:Warning
Cls
Echo Задача не тестировалась на %OS1%!
Echo Введите "Y" чтобы продолжить,
Echo или "N" чтобы выйти из программы.
:Again
Set /p Input=">>> "
If /i Not "%Input%"=="N" (
 If /i Not "%Input%"=="Y" (
  Echo Введите: Y или N
  GoTo Again
 )
)
If /i "%Input%"=="Y" GoTo Task
If /i "%Input%"=="N" Exit
Rem Создание задачи:
:Task
Cls
Echo Создание задачи для "Prog.exe" . . .
Rem код дальше...

В частности интересует реализация определения имени/версии ОС.

Рассматривал вариант получения версии из реестра:



Код:

Код: Выделить всё

For /F "Tokens=3" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion^|Find "REG_SZ"') Do Set Version=%%A
@Echo %Version%

А также упрощённый вариант(без определения имени ОС):



Код:

Код: Выделить всё

For /F "Tokens=2 Delims=[]" %%i In ('ver') Do (
 For /F "Tokens=2,3 Delims=. " %%a In ("%%i") Do Set version=%%a.%%b
)
If "%version%"=="5.1" GoTo WindowsXP
:WindowsXP
Echo На Windows XP отсутствует
Echo необходимость в создания данной задачи...
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Сообщение Iska »

Прошу прощения за неточность, начиная с NT 5.0(Win2k).
Аватара пользователя
Lucretius

Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Сообщение Lucretius »

:: одной строкой - проверка на вин7 русскую х64

ver | find "6.1" >nul && set /? | find "переменных" >nul && if "%ProgramW6432%" Neq "" start /wait vcredist_x64_2012.exe /passive /norestart
Аватара пользователя
Fortress1

Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Сообщение Fortress1 »

у меня есть две винды - 7 и 8. Помогите плиз создать батник который будет определять 7 это или 8, после определения запускать ЕСЛИ 7ка ----> MS Office Starter, ЕСЛИ 8ка - Libre Office.

Заранее спасибо



Если возможно чтобы этот батник мог это же самое делать, только в зависимости от разрядности системы
Аватара пользователя
Super_Kolobok

Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Сообщение Super_Kolobok »

Если вин7х64 то установить Стартер, если х32 то Либру

ver | find "6.1" >nul && if "%ProgramW6432%" Neq "" (start /wait /d "office\Office2010Starter_RU\" SetupConsumerC2R.exe) else (start /wait /d "office\libre\" msiexec /qb! /i LibO_3.6.5_Win_x86_install_multi.msi ALLUSERS=1 CREATEDESKTOPLINK=1 REGISTER_ALL_MSO_TYPES=1 ISCHECKFORPRODUCTUPDATE=0 %LANG%)



Если вин8х64 то установить Либру, если х32 то Стартер

ver | find "6.2" >nul && if "%ProgramW6432%" Neq "" (start /wait /d "office\libre\" msiexec /qb! /i LibO_3.6.5_Win_x86_install_multi.msi ALLUSERS=1 CREATEDESKTOPLINK=1 REGISTER_ALL_MSO_TYPES=1 ISCHECKFORPRODUCTUPDATE=0 %LANG%) else (start /wait /d "office\Office2010Starter_RU\" SetupConsumerC2R.exe)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»