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

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

Ответить
Настройки темы
CMD/BAT - [решено] Корректное возвращение Errorlevel

Аватара для hunk3r

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


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

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


Доброго времени суток.
Есть скрипт проверки событий по заданным аргументам:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set r=%1
set u=%2
set p=%3
set x=%4
set y=%5
set z=%6

FOR /F "delims=" %%i IN ('%windir%\system32\wevtutil.exe qe /r:%r% /u:%u% /p:%p% %x% /rd:true /f:text /q:"*[%x%[Provider[@Name='%y%'] and (EventID=%z%)]]"^|find /c "%z%"') do set "cnt=%%~i"

echo !errorlevel!
echo %cnt%
Errorlevel всегда возвращается 0.
Как выводить errorlevel именно команды find, чтобы убедиться, что команда сработала верно. И как смоделировать ситуацию, когда он будет 1?

Отправлено: 14:12, 24-05-2015

 

Аватара для hunk3r

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


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

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


Минус начальству нужен.
Интересно, а можно сделать errorlevel=0, если события не найдены и 1, если найдены?

Последний раз редактировалось hunk3r, 25-05-2015 в 15:05.


Отправлено: 14:53, 25-05-2015 | #11



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

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


Ветеран


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

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


Цитата hunk3r:
Интересно, а можно сделать errorlevel=0, если события не найдены и 1, если найдены? »
Наверное. Как Вы определяете что «найдены» и что «не найдены»?

Отправлено: 15:09, 25-05-2015 | #12


Аватара для hunk3r

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


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

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


Ребят. Начальство лютует и я понять не могу, что от меня хотят.
Есть 2 файла: 1.bat и 2.bat
В первом записана команда wevtutil.exe в примерном виде:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set r=%1
set u=%2
set p=%3
set x=%4
set y=%5
set z=%6

FOR /F "delims=" %%i IN ('%windir%\system32\wevtutil.exe qe /r:%r% /u:%u% /p:%p% %x% /rd:true /f:text /q:"*[%x%[Provider[@Name='%y%'] and (EventID=%z%)]]"^|find /c "%z%"') do set "cnt=%%~i"
2й файл вызывает первый с доп. прописанными аргументами - call 1.bat r u p x y z

Вопрос! Как получить во втором файле в переменную %ERRORLEVEL%:
а) при успешном выполнении wevtutil+find -> КОЛ-ВО СОБЫТИЙ
б) при ошибке выполнения (файла wevtutil.exe нет, событий нет, ошибка в синтаксисе etc.) -> КОД ОШИБКИ

Последний раз редактировалось hunk3r, 25-05-2015 в 18:54.


Отправлено: 15:35, 25-05-2015 | #13


Аватара для hunk3r

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


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

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


ВСЁ! Готовый скрипт для передачи кол-ва событий системе мониторинга:
1.bat:
Код: Выделить весь код
@echo off
chcp 1251>nul
setlocal enabledelayedexpansion
set r=%1
set u=%2
set p=%3
set x=%4
set y=%~5
set z=%6

%windir%\system32\wevtutil.exe qe /r:%r% /u:%u% /p:%p% %x% /rd:true /f:text /q:"*[%x%[Provider[@Name='%y%'] and (EventID=%z%) and TimeCreated[timediff(@SystemTime) <= 86400000]]]">nul

if %errorlevel% neq 0 goto a

FOR /F "delims=" %%i IN ('%windir%\system32\wevtutil.exe qe /r:%r% /u:%u% /p:%p% %x% /rd:true /f:text /q:"*[%x%[Provider[@Name='%y%'] and (EventID=%z%) and TimeCreated[timediff(@SystemTime) <= 86400000]]]"^|find /c "%z%"') do set "cnt=%%~i"

set errorlevel=%cnt%
exit /b %errorlevel%

:a
exit /b -%errorlevel%
2.bat:
Код: Выделить весь код
@call %~dp0\1.bat localhost user password System "Service Control Manager" 7036
echo %errorlevel%

Последний раз редактировалось hunk3r, 26-05-2015 в 15:06.


Отправлено: 18:56, 25-05-2015 | #14



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Сортировка файлов по результату Errorlevel Herheinz Скриптовые языки администрирования Windows 12 22-03-2015 20:23
CMD/BAT - [решено] %errorlevel% внутри цикла всегда 0 apozlevich Скриптовые языки администрирования Windows 5 22-11-2013 18:55
errorlevel msp sov44 Хочу все знать 15 29-07-2013 12:17
CMD/BAT - [решено] вопрос по ping и команде if %errorlevel% zion87 Скриптовые языки администрирования Windows 1 29-12-2011 02:57
Cmd Параметр ERRORLEVEL storm2005 Microsoft Windows NT/2000/2003 1 30-03-2007 18:49




 
Переход