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

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

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

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


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

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


@Echo Off
Всем привет!!!
Gora или кто-нибуть помогите пожалуйста!!!
посмотрите пожалуйста правильно я написал! суть такая: если b=a т.е это проверка версии радмина тогда выход ни каких действий иначе идет копирование необходимых файлов и далее установка после чего выход???


Set b=W32i APP ENU 2.2.0.0 shp c:\windows\system32\r_server.exe
For /F "tokens=*" %%i In (c:\windows\var.txt) Do (
Set a=%%i
Rem Выход из цикла после чтения первой строки
GoTo Next
)
:Next
If %a% EQU %b% (Echo Exit ) //если а=б тогда выход
Else //иначе процесс установки
(Echo copy "d:\t.exe" "c:\windows\system32\"
copy "d:\settings.reg" "c:\windows\system32\"
c:\windows\system32\t.exe /install /silence
regedit.exe /s c:\windows\system32\settings.reg )
Pause>Nul
Exit
зарание благодарю!!!

Отправлено: 08:52, 23-08-2010

 

Аватара для gora

Ушёл из жизни


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

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


var.txt Вы не привели. Я должен догадаться, что в нем?
Цитата Mickle:
If %a% EQU %b%
Переменная %a% имеет пробелы, значит переменные нужно заключать в кавычки.
Цитата Mickle:
//если а=б тогда выход
Символом комментария в батниках является слово REM и лучше его использовать в начале строки, а не в последней ее части.
Построение операторов сравнения нельзя произвольно менять, об этом написано в справке. Не меняйте без надобности месторасположение открывающих и закрывающих скобок, а также оператора Else. Это может сделать батник неработоспособным.
Код: Выделить весь код
@Echo Off
Set b=W32i APP ENU 2.2.0.0 shp c:\windows\system32\r_server.exe
For /F "tokens=*" %%i In (c:\windows\var.txt) Do (
	Set a=%%i
	Rem Выход из цикла после чтения первой строки, если строк много. Если строка одна, то GoTo Next можно удалить
	GoTo Next
)
:Next
If Not "%a%"=="%b%" (
	Rem если а не равно б тогда процесс установки 
	copy /y "d:\t.exe" "c:\windows\system32\t.exe"
	copy /y "d:\settings.reg" "c:\windows\system32\settings.reg" 
	c:\windows\system32\t.exe /install /silence
	regedit.exe /s c:\windows\system32\settings.reg
)
Rem иначе выход
Pause>Nul
Exit
PS
Заключайте код батника в теги [code] - значок # на панели быстрого ответа.

Отправлено: 08:56, 23-08-2010 | #2



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

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


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


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

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


в var.txt находится всего лишь одна строка -> W32i APP ENU 2.2.0.0 shp c:\windows\system32\r_server.exe
которая идет как константа!
значит теперь правильно?

а файл со строкой формируется спомошью утилитки FileVer проверяет версию exe-шника!

/F "tokens=*" %%i In можно подробнее эту строку разобрать?

Последний раз редактировалось Mickle, 23-08-2010 в 11:27. Причина: не дополнил


Отправлено: 11:20, 23-08-2010 | #3


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


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

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


Mickle,

Цитата gora:
For /F "tokens=*" %%i In (c:\windows\var.txt) Do ( »
Для более попробной справки читайте вывод For /?, а по данной конструкции:

/F - ключ, определяет дейтвие по раскрытию, чтению и обработки заданного набора (в данном случае "c:\windows\var.txt"), т.е. файл раскрывается и читается. Далее, "tokens" - определяет номер подстроки из строки полученной при чтении файла, символ * указывает на запись всей полученной строки в переменную %%i. Обратите внимание, что параметры "skip" и "delims" в данном случае опущены. После получении переменной в процедуре исполнения DO идет отработка указанных команд.

Маленькое замечание, переменную "b" лучше размещать в кавычках? т.к. её определение идет "ручным способом":

Код: Выделить весь код
Set b="W32i APP ENU 2.2.0.0 shp c:\windows\system32\r_server.exe"
или
Set "b=W32i APP ENU 2.2.0.0 shp c:\windows\system32\r_server.exe"

Последний раз редактировалось deepred, 23-08-2010 в 15:06.


Отправлено: 14:34, 23-08-2010 | #4


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


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

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


Спасибо большое!

Отправлено: 14:44, 23-08-2010 | #5


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


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

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


For %%a In (*.txt) Do @Call :func %%a %%~ta

Подскажите пожалуйста описание вот этой строки, то что в ней происходит.
для чего используется In () и %~ta

Отправлено: 16:08, 23-08-2010 | #6


Аватара для gora

Ушёл из жизни


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

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


DimankoR, обрабатываются все файлы с расширением *.txt из текущей директории. Имя файла (%%a) и дата/время его создания (%%~ta) передаются в процедуру :func в качестве первого и второго параметра соответственно.
Подробнее см. For /?.

Отправлено: 16:17, 23-08-2010 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Релиз новой версии Chrome включит бета-версии для Linux и Mac OS OSZone News Новости информационных технологий 6 29-05-2010 09:04
Проверка volkov99 Тест-форум 0 29-04-2010 16:07
Проверка CD Actor Автоматическая установка Windows 2000/XP/2003 15 04-04-2009 13:27
Redhat/Fedora - проверка hdd slaine Общий по Linux 4 05-01-2008 23:54
Проверка процессора. DenDim Непонятные проблемы с Железом 11 21-03-2003 19:08




 
Переход