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

Показать сообщение отдельно

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


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

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


По выше приведённым примерам собрал скрипт. Скрипт проверил(рабочий) на Win XP home и Win 7. К сожалению не могу проверить на других осях.
Обращаюсь к специалистам с просьбой проверить скрипт на грамотность написания, и по возможности внести поправки (необходимо, чтобы скрипт работал на всей 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 необходимость в создания данной задачи...

Последний раз редактировалось Lucretius, 30-01-2013 в 19:47.


Отправлено: 21:43, 23-01-2013 | #44