Показать полную графическую версию : [решено] Определение версии (сборки) и сервис пака ОС
Если не трудно объясни»
1. Позиция версии в VER непостоянна, например:
Win2003: "Microsoft Windows [Version 5.2.3790]" (3-я)
WinXP : "Microsoft Windows XP [Версия 5.1.2600]" (4-я)
2. Возвращаемый номер версии 3-х и более значный, номер сборки нужно отсекать.
3. При подстановке значения, имя переменной нужно брать в знаки '%'.
на семерке правильно срабатывал скрипт»скрипт всегда будет падать на семерку, т.к. не выполняется ни одно из условий
Devils0411
04-08-2009, 15:39
Спасибо, теперь стало яснее ;)
ultra_fs
03-09-2009, 23:22
а как будет выглядеть параметр csdversion в случае отсутствия sp в системе (ну и условие скрипта для проверки соответственно)?
cleric1985_n
09-03-2010, 12:35
Не знаю, задавался ли подобный вопрос, но я не нашел...или просто не уверен какие ключевые слова задать для поиска..
Интересует как с помощью батника или другим образом проверить версию системы, т.е. что взять в качестве проверяемого файла или параметра реестра..
Нужно для таких целей: есть программа которая работает на XP, но не работает на 7, или наоборот..так вот батник должен проверить какая система.. и только в том случае установить прогу, если подходит система...
не уверен какие ключевые слова задать для поиска »
например, "CSDVersion" ;)
El Sanchez
09-03-2010, 13:41
cleric1985_n,
Для XP:
@echo off
ver|find "XP"&&start "" "Path to proga\proga.exe"
Что выдает команда ver в win7 и есть ли она там вообще я не знаю. :blush2:
cleric1985_n
09-03-2010, 18:49
например, "CSDVersion" »
Укажите плиз тогда как реализовать? Какие значения там должны быть?
@echo off
ver|find "XP"&&start "" "Path to proga\proga.exe" »
Спасибо. В 7 проверил тоже работает, но там не указывается что это 7, но указана версия, т.е для 7 - 6.1, а XP - 5.1.
Могу я использовать эти данные в качестве маркерных?
Могу я использовать эти данные в качестве маркерных? »
95: "95"
98: "98"
Me: "Me"
2000: "5.0"
XP: "5.1"
2003 или xp64: "5.2"
Vista: "6.0"
7: "6.1" или "7.0"
El Sanchez
:unsure: извиняюсь если глупость спросил, но все-же:
к примеру у меня в папке есть два файла один только для хр другой для 7, программа выполняется из runonceex какую команду мне использовать если я ставлю на хр, чтобы запускалась программа для хр, а если я буду устанавливать на 7 то запускался файл для 7, а программа для хр игнорировалась
просто сдесь мне не совсем понятно:@echo off
ver|find "XP"&&start "" "Path to proga\proga.exe"
но там не указывается что это 7, но указана версия, т.е для 7 - 6.1, а XP - 5.1. »
Operating System Version (Windows) (http://msdn.microsoft.com/en-us/library/ms724832(VS.85).aspx)
WMI Tasks: Operating Systems (Windows) (http://msdn.microsoft.com/en-us/library/aa394596(VS.85).aspx)
...determine which version of the Windows operating system is installed on a computer?
El Sanchez
24-03-2010, 10:17
7ka,
@echo off
ver|find "5.1"&&start "" "Path to installers\installprogXP.exe"||start "" "Path to installers\installprogWin7.exe"
Команда ver покажет версию ОС (результат для XP - Microsoft Windows XP [Версия 5.1.2600]), ver|find "5.1" - поиск текста "5.1" в выводе команды ver, где | - оператор конвейеризации (piping), означающий перенаправление вывода команды, стоящей до оператора, на вход команды, стоящей после оператора.
&&, || - операторы группирования команд.
Команда№1&&Команда№2 - команда№2 исполняется, если исполняется команда№1
Команда№1||Команда№2 - команда№2 исполняется, если не исполняется команда№1
Объединим: Команда№1&&Команда№2||Команда№3 - команда№2 исполняется, если исполняется команда№1, а команда№3 исполняется, если не исполняется команда№2, отсюда вывод:
Если исполнится команда№1 (ver|find "5.1"), то исполнится команда№2 (start "" "Path to installers\installprogXP.exe"), иначе исполнится команда№3 (start "" "Path to installers\installprogWin7.exe")
Если исполнится команда№1 (ver|find "5.1"), то исполнится команда№2 (start "" "Path to installers\installprogXP.exe"), иначе исполнится команда№3 (start "" "Path to installers\installprogWin7.exe") »
а с ключами например:ver|find "5.1"&&start "" "%SYSTEMDRIVE%\APPWINXP.MSI /qn /NORESTART"||start "" "%SYSTEMDRIVE%\APPWIN7.EXE /S" будет работать ?
El Sanchez
24-03-2010, 18:19
будет работать ? »
В кавычки надо заключать только путь к инсталлятору, ключи - нет
ver|find "5.1"&&start "" "%SYSTEMDRIVE%\APPWINXP.MSI" /qn /NORESTART||start "" "%SYSTEMDRIVE%\APPWIN7.EXE" /S
В кавычки надо заключать только путь к инсталлятору, ключи - нет »
жаль, но всеравно спасибо)
Escalion
26-11-2010, 07:25
Покопался на форуме и исходя из решений пользователей вывел код позволяющий не только определить тип системы, но и ее разрядность:
Echo Off
IF EXIST "%ProgramFiles(x86)%" (
ver|find "5.1"&&Echo Windows XP x64
ver|find "5.2"&&Echo Windows 2003 x64
ver|find "6.0"&&Echo Windows Vista x64
ver|find "6.1"&&Echo Windows Seven x64
goto End
)
ver|find "5.1"&&Echo Windows XP x32
ver|find "5.2"&&Echo Windows 2003 x32
ver|find "6.0"&&Echo Windows Vista x32
ver|find "6.1"&&Echo Windows Seven x32
:End
Провирил код на Windows XP x32 и Windows Seven x64.
Escalion,
XP 64 вроде имеет код 5.2, как и 2003-я.
Escalion
28-11-2010, 07:44
seriych, Нет. У ХР 5.1, это я проверил (думаю врятли у разных ХР коды могут отличаться). Однако я не проверял коды на 2003 и Висте... возможно и ошибся. Но эти коды я взял из сообщений пользователей этого форума, которые решали подобные задачи на 2003 и Висте.
вот еще один рабочий код
set OS_TYPE=32
IF EXIST "%PROGRAMFILES(x86)%" SET OS_TYPE=64
goto %OS_TYPE%
:32
echo OS_TYPE=%OS_TYPE%
pause
:64
echo OS_TYPE=%OS_TYPE%
pause
sLiDeR-X
24-04-2012, 20:17
Ageron, Escalion, а почему бы не воспользоваться командой %Processor_Architecture%?
sLiDeR-X,
на 64 разрядном процессоре может стоять 32 разрядная ос
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC