PDA

Показать полную графическую версию : [решено] Определение версии (сборки) и сервис пака ОС


Страниц : 1 [2] 3 4

amel27
04-08-2009, 12:08
Если не трудно объясни»

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, или наоборот..так вот батник должен проверить какая система.. и только в том случае установить прогу, если подходит система...

amel27
09-03-2010, 12:42
не уверен какие ключевые слова задать для поиска »
например, "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.
Могу я использовать эти данные в качестве маркерных?

seriych
09-03-2010, 20:49
Могу я использовать эти данные в качестве маркерных? »
95: "95"
98: "98"
Me: "Me"
2000: "5.0"
XP: "5.1"
2003 или xp64: "5.2"
Vista: "6.0"
7: "6.1" или "7.0"

7ka
24-03-2010, 06:47
El Sanchez
:unsure: извиняюсь если глупость спросил, но все-же:
к примеру у меня в папке есть два файла один только для хр другой для 7, программа выполняется из runonceex какую команду мне использовать если я ставлю на хр, чтобы запускалась программа для хр, а если я буду устанавливать на 7 то запускался файл для 7, а программа для хр игнорировалась
просто сдесь мне не совсем понятно:@echo off
ver|find "XP"&&start "" "Path to proga\proga.exe"

Vadikan
24-03-2010, 10:13
но там не указывается что это 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")

7ka
24-03-2010, 17:34
Если исполнится команда№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

7ka
24-03-2010, 20:20
В кавычки надо заключать только путь к инсталлятору, ключи - нет »
жаль, но всеравно спасибо)

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.

seriych
27-11-2010, 22:40
Escalion,
XP 64 вроде имеет код 5.2, как и 2003-я.

Escalion
28-11-2010, 07:44
seriych, Нет. У ХР 5.1, это я проверил (думаю врятли у разных ХР коды могут отличаться). Однако я не проверял коды на 2003 и Висте... возможно и ошибся. Но эти коды я взял из сообщений пользователей этого форума, которые решали подобные задачи на 2003 и Висте.

Ageron
08-08-2011, 17:25
вот еще один рабочий код

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%?

Ageron
25-04-2012, 14:04
sLiDeR-X,
на 64 разрядном процессоре может стоять 32 разрядная ос




© OSzone.net 2001-2012