Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Использование утилит Билла Стюарта в BAT (http://forum.oszone.net/showthread.php?t=253092)

Lucretius 03-02-2013 17:51 2081688

Использование утилит Билла Стюарта в BAT
 
Недавно натолкнулся на набор утилит командной строки (автор: Билл Стюарт), предназначенных для администрирования Windows. Скачать и ознакомиться с описанием можно по ссылке.
Возможности утилит удобно использовать в скриптах, например в BAT. Утилиты бесплатны, их также можно использовать в собственных приложениях с предварительного разрешения автора.

Вопрос по утилитам FVerTest.exe и OSTest.exe:
FVerTest.exe выводит информацию о версии EXE/DLL, в виде:
[1.0.0.0] C:\Windows\system32\Library.dll

OSTest.exe выводит информацию об ОС:
Platform: ...
Version: ...
Service Pack: ...
Build: ...
Home edition: ...
Role: ...
Terminal Server: ...
Architecture: ...

Каким образом можно вывести в переменные эти значения/одно из значений?
Чтобы впоследствии можно было создать похожие конструкции:
Код:

If "%version%"=="1.0.0.0" GoTo :enter_path

zion87 03-02-2013 19:47 2081782

так можно и без утилит

Код:

FOR /F "tokens=3* delims= " %%i in ('ver') do set version=%%i
If version==5.1 GoTo :xp
If version==6.1 GoTo :seven
и т.д.


Windows NT 3.1 (1993)
Windows NT 3.5 (1994)
Windows NT 3.51 (1995)
Windows NT 4.0 (1996)
Windows 2000 (2000) — Windows NT 5.0
Windows XP (2001) — Windows NT 5.1
Windows XP 64-bit Edition (2006) — Windows NT 5.2
Windows Server 2003 (2003) — Windows NT 5.2
Windows Vista (2006) — Windows NT 6.0
Windows Home Server (2007) — Windows NT 5.2
Windows Server 2008 (2008) — Windows NT 6.0
Windows Small Business Server (2008) — Windows NT 6.0
Windows 7 — Windows NT 6.1 (2009)
Windows Server 2008 R2 — Windows NT 6.1 (2009)
Windows Home Server 2011 — Windows NT 6.1 (2011)
Windows 8 — Windows NT 6.2 (2012)
Windows Server 8 — Windows NT 6.2 (2012)

Iska 03-02-2013 20:19 2081811

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=[] " %%i in (`FVerTest.exe "C:\WINDOWS\system32\shell32.dll"`) do set sVersion=%%i

if defined sVersion echo [%sVersion%]

endlocal
exit /b 0

Но почему Вы не хотите использовать имеющийся функционал по сравнению версии:
Цитата:

SYNOPSIS
fvertest [-v version] [-q] [d:][path]filename.ext
?

Наподобие:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

FVerTest.exe -v "6.0.2900.5853" -q "C:\WINDOWS\system32\shell32.dll"

if %errorlevel% equ 1 echo Version is equal

endlocal
exit /b 0

Работа с «OSTest.exe» аналогична приведённым примерам.

Lucretius 03-02-2013 20:37 2081830

Iska спасибо! Вы мне помогли.
Встроенный функционал мне не подходит т.к. мне недостаточно верифицировать конкретную версию, а необходимо принимать отдельное решение для каждой версии.

Iska 03-02-2013 22:29 2081909

Lucretius, приведите пример.

Lucretius 04-02-2013 18:56 2082467

Цитата:

Цитата Iska
Lucretius, приведите пример. »

Byte patch(локализация) с поправкой на версию.

Iska 04-02-2013 19:04 2082475

Не то. Опишите существующий алгоритм. Можно словами.

Lucretius 04-02-2013 19:48 2082517

Цитата:

Цитата Iska
Опишите существующий алгоритм. Можно словами. »

Алгоритм, как Вы понимаете в процессе реализации. В BAT я не силён поэтому сейчас застрял на сборке скрипта. Если словами, то используется патч(исполняемый файл) соответствующий версии пропатчиваемой программы. Всего патчей 3, ввиду небольшого размера патчей(<50kb) для выходного размера инсталлятора это не критично. В качестве инсталлятора - 7z SFX по причине простоты и прозрачности для антивирусного ПО.

Iska 04-02-2013 21:30 2082594

Lucretius, я просто не могу понять, почему Вы считаете, что использование «-v» Вам не подходит?!

Lucretius 04-02-2013 22:20 2082621

Iska, Да действительно в моём случае лучше использовать «-v» для каждой версии. Я ошибочно полагал что при выводе значения в переменную код будет проще. Впрочем это удобно для вывода информации о версии в отображаемом тексте например в диалоге или предупреждении.


Время: 19:34.

Время: 19:34.
© OSzone.net 2001-