Войти

Показать полную графическую версию : Множественные условия с получением %ERRORLEVEL%


POSTREALITY
18-10-2017, 22:10
Друзья, здравствуйте!
Подскажите пожалуйста, уже всю голову сломал.
Есть батник автоматизации, основная его часть такова:


SetLocal EnableExtensions EnableDelayedExpansion
if not exist "Q:\error.err" (
%mailsender% другие переменные сендера -sub "FILE. STATUS: OK." -cs windows-1251 -M "Всё ОК."
) else (
findstr /I /C:"ISHEM OSHIBOCHNYE STROKI" "Q:\error.err" >nul
if "%ERRORLEVEL%"=="0" (
move "Q:\error.err" "%ErrDir%\%FD%_error-GEN.file" >nul
%mailsender% другие переменные сендера -sub "FILE. STATUS: ATTENTION. Detected Error." -cs windows-1251 -M "Есть ошибки."
) else (
del "Q:\error.err"
%mailsender% другие переменные сендера -sub "FILE. STATUS: OK." -cs windows-1251 -M "Всё ОК."
)
)


Файл error.err создаётся всегда, но если ошибок нет, то он пустой. Если ошибки есть, то ищем их по указанным значениям команды findstr.

Проблема в том, что как бы я не крутил, но на почту всегда приходит сообщение "Есть ошибки", даже в том случае если файл error.err создался пустым и ошибок соответственно нет.

Ткните меня носом пожалуйста, где я накосячил?

Большое всем спасибо за помощь!

alpap
18-10-2017, 22:28
POSTREALITY,
вашу мамалыгу кроме вас никто и не разберет - это понятно, поэтому лучше просто напишите задачу и идею плюс цель, опишите детально, неплохо привести желаемый алгоритм.

Iska
18-10-2017, 22:51
Проблема в том, что как бы я не крутил, но на почту всегда приходит сообщение "Есть ошибки", даже в том случае если файл error.err создался пустым и ошибок соответственно нет. »
if !ERRORLEVEL! equ 0 (
А ещё лучше вообще уйти от переменной:
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=q:\error.err

if exist "%sSourceFile%" (
type "%sSourceFile%" | >nul findstr.exe /i /c:"ISHEM OSHIBOCHNYE STROKI" && (
move "%sSourceFile%" "%ErrDir%\%FD%_error-GEN.file" >nul
"%mailsender%" другие переменные сендера -sub "FILE. STATUS: ATTENTION. Detected Error." -cs windows-1251 -M "Есть ошибки."
) || (
del "%sSourceFile%"
"%mailsender%" другие переменные сендера -sub "FILE. STATUS: OK." -cs windows-1251 -M "Всё ОК."
)
) else (
"%mailsender%" другие переменные сендера -sub "FILE. STATUS: OK." -cs windows-1251 -M "Всё ОК."
)

endlocal
exit /b 0




© OSzone.net 2001-2012