Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

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

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


Может кто-нибудь поделится скриптом который возвращает версию ОС и ее сервис пак в консоли , с последующим запуском файла в консоли или подсказать соответствие версии сборок ОС (Nt,2k,2k server,xp, 2k3, vista) сервис пакам для нижеприведенного скрипта.

Цитата:
for /F "tokens=4" %%V in ('ver') do if %%V==[Версия goto

Отправлено: 02:10, 27-05-2009

 

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата Fortress1:
как в этот батник добавить start /wait »
Дописать в обе строки (хотя я не вижу в этом смысла):
Код: Выделить весь код
...
Start /wait "" "E:\BSPOST\Install\LibreOffice.exe"
...
Start /wait "" "c:\Program Files (x86)\Microsoft Office\Options14\MSOO.exe"
Наличие первых пустых кавычек в строке обязательно!
Цитата Fortress1:
автоопределение папки программ файлс »
Код: Выделить весь код
Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
Set PF=%ProgramFiles%
If %xOS%==x64 Set PF=%ProgramFiles(x86)%
Echo %xOS% %PF%
Цитата Fortress1:
автоопределение буквы флешки »
Если с этой флешки запущен сам батник, то можно так:
Код: Выделить весь код
Set FlDrv=%~d0

Последний раз редактировалось gora, 11-02-2013 в 21:47.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:26, 08-02-2013 | #61



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Fortress1

Пользователь


Сообщения: 137
Благодарности: 8

Профиль | Отправить PM | Цитировать


@echo off
set SYSTEMID=Windows 7

reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | find "Windows 8" >nul
if "%ERRORLEVEL%" == "0" set SYSTEMID=Windows 8

Set FlDrv=%~d0
Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
Set PF=%ProgramFiles%
If xOS==x64 Set PF=%ProgramFiles(x86)%
Echo %xOS% %PF%

if "%SYSTEMID%" == "Windows 8" (

echo Windows 8
echo Installing Libre Office
Start /wait "" "%~d0\BSPOST\Install\LibreOffice.exe"
echo Done
exit
)

echo Windows 7
echo Installing MS Office 2010
Start /wait "" "%PF%\Microsoft Office\Options14\MSOO.exe"
echo Done
exit



На 8ке любой редакции работает без проблем
На 7ке х64 все равно выдает ошибку в пути к ПФ (ставит обычную ПФ а не х86) (на ноуте с 8кой определил папку ПФх86 правильно)
На 7ке х86 любой редакции работает без проблем
(к счастью ноутов сотня так что тестим мгновенно)

-------
http://nick-name.ru/forum5t0/Fortress.gif


Последний раз редактировалось Fortress1, 08-02-2013 в 17:02.


Отправлено: 16:25, 08-02-2013 | #62


Аватара для seriych

Старожил


Сообщения: 182
Благодарности: 42

Профиль | Отправить PM | Цитировать


Fortress1,
Кстати, ты батник запускаешь прямо непосредственно сам, или из какой-то программы оболочки? Просто если из программы оболочки, то она очевидно 32-битная и запущеный дочерний батник будет тоже считаться 32-битным и переменная %ProgramFiles% ему будет возвращаться как %ProgramFiles(x86)% даже если он запущен на 64-битной системе. Там надо в проге перед вызовом батника отключать перенаправление потоков для 32 битных программ, чтобы переменные отдавались как есть.

-------
* Книгой можно не только стаканчик с лапшой накрывать. ©


Отправлено: 09:35, 09-02-2013 | #63


Аватара для Fortress1

Пользователь


Сообщения: 137
Благодарности: 8

Профиль | Отправить PM | Цитировать


батник запускаю руками...из проги еще не пробовал

-------
http://nick-name.ru/forum5t0/Fortress.gif


Отправлено: 10:00, 09-02-2013 | #64


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
set SYSTEMID=Windows 7
reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | find "Windows 8" >nul
if "%ERRORLEVEL%"=="0" set SYSTEMID=Windows 8

Set FlDrv=%~d0
Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
Set PF=%ProgramFiles(x86)%
If %xOS%==x86 Set PF=%ProgramFiles%
Echo %%xOS%% -		%xOS%
Echo %%PF%% -		%PF%
Echo %%SYSTEMID%% -	%SYSTEMID%
Echo %%FlDrv%% -	%FlDrv%
Echo ====================================================
if "%SYSTEMID%"=="Windows 8" (
	echo Windows 8
	echo Installing Libre Office
	Start /wait "" "%~d0\BSPOST\Install\LibreOffice.exe"
) Else (
	echo Windows 7
	echo Installing MS Office 2010
	Start /wait "" "%PF%\Microsoft Office\Options14\MSOO.exe"
)
echo Done
Pause
exit

Последний раз редактировалось gora, 11-02-2013 в 21:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:09, 11-02-2013 | #65


Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


А как задать обратное условие, т.е. если Ось 6.0 6.1 6.2 - код дальше, если нет то GoTo.
Код: Выделить весь код
For /F "Tokens=2 Delims=[]" %%i In ('ver') Do (
 For /F "Tokens=2,3 Delims=. " %%a In ("%%i") Do Set version=%%a.%%b
)
for %%i in ( 6.0 6.1 6.2 ) do if %%i equ %version%  GoTo Task

Отправлено: 18:54, 11-02-2013 | #66


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
Ver | Find "6." >nul && Set newver=1
If Defined newver (
	Echo New version
) Else Echo Old version
Pause>nul
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:14, 11-02-2013 | #67


Аватара для Fortress1

Пользователь


Сообщения: 137
Благодарности: 8

Профиль | Отправить PM | Цитировать


Уважаемый Gora

вот скрин этого скрипта, ответ на который выдал системник с х86 ОС



Пробовал как из под BSPOST, так и запущенный руками батник....Итог один - х86 система определяет неправильно

-------
http://nick-name.ru/forum5t0/Fortress.gif


Отправлено: 20:59, 11-02-2013 | #68


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Fortress1, исправил.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:40, 11-02-2013 | #69


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте, Уважаемые Гуру!

Тема очень старая, но может моя информация окажется полезной. В Windows 7 удалось получить часть информации через WMIC. Часть информации через обращение к реестру недоступна, например, при вызове *.bat - файла из-под Total Commander (например, поле CSDVersion раздела HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion). Работает такая схема (на примере получения названия ОС):

Код: Выделить весь код
SET WMICPS=OS
SET WMICPARAM=Caption

FOR /F "delims=" %%a in ('WMIC %WMICPS% GET /FORMAT:LIST ^| FIND /i "%WMICPARAM%"') do ( FOR /F "tokens=1 delims==" %%b in ("%%a") do (IF "%%b"=="%WMICPARAM%" FOR /F "tokens=2 delims==" %%c in ("%%a") do (SET PARAMVOL=%%c)))
где WMICPS - раздел WMIC, WMICPARAM - имя параметра, PARAMVOL - получаемое значение параметра. Второй цикл проверяет полное ли соответствие заданного имени параметра найденной строке, например, для полей Name. Правда, поле Name раздела OS содержит дополнительную строку со спецсимволами, поэтому название ОС пришлось брать по Caption.
Среди прочего по такой схеме:
WMICPARAM=OSArchitecture - архитектура ОС
WMICPARAM=CSDVersion - версия сервис-пака ("" - без сервис-пака).

WMIC также можно использовать для быстрого определения наличия нужного обновления. У меня сработало с использованием временного файла по схеме:

Код: Выделить весь код
SET KBLOG=C:\KB.log
WMIC QFE LIST >> %KBLOG%
1>NUL FINDSTR "KB2598845" %KBLOG% || GOTO :Code_If_Installed

Отправлено: 22:53, 27-01-2018 | #70



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определение версии (сборки) и сервис пака ОС

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Управление FireWall через GPO на Windows без сервис пака. exo Microsoft Windows NT/2000/2003 3 28-09-2009 12:52
Разное - [решено] Изменение метки установленного сервис пака Midge Microsoft Windows 2000/XP 1 24-05-2009 23:02
Microsoft официально запускает XP SP3. Чего следует ожидать от нового сервис пака? OSZone News Новости и события Microsoft 8 23-04-2008 08:09
Определение версии сервис пака по файлам дистрибутива Sparkster Microsoft Windows 2000/XP 3 07-05-2007 22:26
Как изменить версию сервис пака tualatin Microsoft Windows NT/2000/2003 12 10-06-2005 17:03




 
Переход