Я новичок в программировании окон. Мне нужно написать функцию цикла для выполнения задачи, если обнаружена определенная ошибка. См. Код ниже.Как выполнить цикл If и найти текст с помощью пакета
У меня возникла проблема с Find, которая ищет Kitchen.Error.NoRepDefinied. Скрипт выполняется пять раз, даже если ключевое слово find не найдено.
Пожалуйста, помогите мне определить проблему и объясните, что здесь не так. Любая помощь приветствуется. Я использую Windows Server 2012 R2.
set /a x=0
:while1
if %x% leq 5 (
echo %x%
call abc.exe > C:\Logs\App_Error.log
set file=C:\Logs\App_error.log
set /a cnt=0
for /f %%a in ('type "%file%"^|find "!Kitchen.Error.NoRepDefinied!" /i /c') do set /a cnt=%%a
if !cnt! NEQ 0 (
if !x! NEQ 5 (
DEL C:\Logs\App_error.log
)
set /a x=x+1
goto :while1
)
echo "OUTSIDE LOOP"
echo The Status is %errorlevel%
call:check_file
exit /b %errorlevel%
)
Nice новичок усилия. +1 для сдачи в работу, прежде чем обращаться за помощью! Вы пробовали 'echo! Cnt!', Чтобы узнать, почему именно!! Cnt! neq 0'? Имеет ли смысл использовать 'if! Cnt! gtr 0'? Кроме того, попробуйте добавить «echo! Kitchen.Error.NoRepDefined!», Чтобы убедиться, что переменная имеет ожидаемое значение в цикле. – rojo
Чтобы дождаться, когда ваш abc.exe заполнит и закроет журнал, чтобы вы могли использовать его правильно: 'start '"/wait abc.exe> C: \ Logs \ App_Error.log' вместо 'вызова abc.exe> ... 'И в цикле FOR, что' ... do set/a cnt = %% a' может привести к нулю, потому что '%% a' может быть текстом. Затем попробуйте что-то вроде '... do set/a cnt = cnt + 1'. Для целей отладки попробуйте '... do echo %% a' – JosefZ