Насколько я понял, этот параметр показывает версию системы, а не процессора.
CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
-
sLiDeR-X
Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
Ageron, причем здесь процессор.
Насколько я понял, этот параметр показывает версию системы, а не процессора.
Насколько я понял, этот параметр показывает версию системы, а не процессора.
CMD/BAT - Батник проверяющий битность системы (32 или 64 bit)???
-
NoIZz
Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
Точнее тип системы
и про какие 64-бит процессоры идет речь? На Итаниумы 32-бит винду на поставишь (%PROCESSOR_ARCHITECTURE%=IA64)
во всех остальных случаях зависит от разрядности ОС
ultra_fs, в русской 7ке ver возвращает Microsoft Windows [Version 6.1.7601]
и про какие 64-бит процессоры идет речь? На Итаниумы 32-бит винду на поставишь (%PROCESSOR_ARCHITECTURE%=IA64)
во всех остальных случаях зависит от разрядности ОС
ultra_fs, в русской 7ке ver возвращает Microsoft Windows [Version 6.1.7601]
-
NoIZz
Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
Определение языка
тк не на всех русских через 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
запоминание - что бы по выходу вернуть ее взад
тк не на всех русских через 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 - [решено] Определение версии (сборки) и сервис пака ОС
По выше приведённым примерам собрал скрипт. Скрипт проверил(рабочий) на Win XP home и Win 7. К сожалению не могу проверить на других осях.
Обращаюсь к специалистам с просьбой проверить скрипт на грамотность написания, и по возможности внести поправки (необходимо, чтобы скрипт работал на всей NT-линейке включая x64):
Код:
В частности интересует реализация определения имени/версии ОС.
Рассматривал вариант получения версии из реестра:
Код:
А также упрощённый вариант(без определения имени ОС):
Код:
Обращаюсь к специалистам с просьбой проверить скрипт на грамотность написания, и по возможности внести поправки (необходимо, чтобы скрипт работал на всей 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 - [решено] Определение версии (сборки) и сервис пака ОС
Цитата Lucretius:
на всей NT-линейке.
Начиная с NT 3.1, надо полагать?
на всей NT-линейке.
CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
Начиная с NT 3.1, надо полагать?
-
Iska
Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
Прошу прощения за неточность, начиная с NT 5.0(Win2k).
-
Lucretius
Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
:: одной строкой - проверка на вин7 русскую х64
ver | find "6.1" >nul && set /? | find "переменных" >nul && if "%ProgramW6432%" Neq "" start /wait vcredist_x64_2012.exe /passive /norestart
ver | find "6.1" >nul && set /? | find "переменных" >nul && if "%ProgramW6432%" Neq "" start /wait vcredist_x64_2012.exe /passive /norestart
-
Iska
Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
Цитата Super_Kolobok:
проверка на вин7 русскую х64
Или Server 2008 R2
.
проверка на вин7 русскую х64
CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
Или Server 2008 R2
.-
Fortress1
Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
у меня есть две винды - 7 и 8. Помогите плиз создать батник который будет определять 7 это или 8, после определения запускать ЕСЛИ 7ка ----> MS Office Starter, ЕСЛИ 8ка - Libre Office.
Заранее спасибо
Если возможно чтобы этот батник мог это же самое делать, только в зависимости от разрядности системы
Заранее спасибо
Если возможно чтобы этот батник мог это же самое делать, только в зависимости от разрядности системы
-
Super_Kolobok
Re: CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС
Если вин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)
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)