Показать полную графическую версию : [решено] проверка версии радмина
@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
зарание благодарю!!!
var.txt Вы не привели. Я должен догадаться, что в нем?If %a% EQU %b%
Переменная %a% имеет пробелы, значит переменные нужно заключать в кавычки.//если а=б тогда выход
Символом комментария в батниках является слово 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] - значок # на панели быстрого ответа.
в var.txt находится всего лишь одна строка -> W32i APP ENU 2.2.0.0 shp c:\windows\system32\r_server.exe
которая идет как константа!
значит теперь правильно?
а файл со строкой формируется спомошью утилитки FileVer проверяет версию exe-шника!
/F "tokens=*" %%i In можно подробнее эту строку разобрать?
Mickle,
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"
DimankoR
23-08-2010, 16:08
For %%a In (*.txt) Do @Call :func %%a %%~ta
Подскажите пожалуйста описание вот этой строки, то что в ней происходит.
для чего используется In () и %~ta
DimankoR, обрабатываются все файлы с расширением *.txt из текущей директории. Имя файла (%%a) и дата/время его создания (%%~ta) передаются в процедуру :func в качестве первого и второго параметра соответственно.
Подробнее см. For /?.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.