|
|
Результат установки обновления
Доброго времени суток!
Пытаюсь автоматизировать установку обновления для WindowsXP, но ни как не могу додуматься как определить успешность/ошибку установки. Например вот это:
Код:
\\share\WindowsXP\kb4012598_x86_RU.exe /quiet /warnrestart:1 /log:c:\WannaCrypt.log || echo Installation error %errorlevel%. See c:\WannaCrypt.log >> %log%
Всегда выдает
Код:
Installation error 0
даже в случае успешной установки. Помогите разобраться.
И еще попутный вопрос. Для успешной установки иногда приходится удалить ключ реестра
Код:
reg delete HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer /f > nul
но если этой ветки не существует выходить ошибка. Так вот, никак не получается подавить вывод ошибки, пытался отправлять в nul, не помогает. Временно сделал так
Код:
start reg delete HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer /f
но это просто костыль. Есть способы подавить сообщение? Или придется сначала проверять наличие ветки?
|
- Всегда? По приведённому коду он должен «выдавать» только в случае ненулевого кода возврата («||»), а не «всегда». В случае нулевого — не должен выдавать ничего.
- А вот значение в приведёном коде %errorlevel% никогда не будет раскрываться в код возврата от kb4012598_x86_RU.exe, поскольку переменная окружения в данном виде раскрывается в момент начала исполнения команды. Всей команды. То есть — до начала исполнения kb4012598_x86_RU.exe. Хотите увидеть реальный код возврата — «setlocal enableextensions enabledelayedexpansion» в начало пакетного файла, сразу после «@echo off», и вместо «%errorlevel%» использовать «!errorlevel!». Либо задать использование отложенного раскрытия переменных окружения в реестре для командной строки по умолчанию. Либо вызывать командный процессор %comspec% с параметром «/v:on»:
Скрытый текст
Цитата:
/V:ON Разрешение отложенного расширения переменных среды с применением
символа '!' в качестве разделителя. Например, /V:ON разрешает
использовать !var! в качестве расширения переменной var во время
выполнения. Синтаксис var служит для расширения переменных
при вводе, что приводит к совсем другим результатам внутри
цикла FOR.
|
Не надо попутных. Один вопрос — одна тема.
Цитата:
Цитата rene
но если этой ветки не существует выходить ошибка. Так вот, никак не получается подавить вывод ошибки, пытался отправлять в nul, не помогает. »
|
Не то перенаправляете.
Код:
2>nul reg.exe delete "HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer" /f
В данном случае перенаправлять в пустое устройство нужно не стандартный поток вывода stdout, а стандартный поток ошибок stderr.
|
Эх, как много мне еще учиться. Спасибо за помощь!
|
Время: 13:53.
© OSzone.net 2001-