如何执行如果使用批处理循环和查找文本

我是新的Windows批处理编程。 我需要编写一个循环函数来执行任务,如果发现一个特定的错误。 请参阅下面的代码。

我正在查找Kitchen.Error.NoRepDefinied。 脚本执行五次,即使找不到关键字。

请帮助我确定问题,并解释这里有什么问题。 任何帮助表示赞赏。 我正在使用Windows Server 2012 R2。

set /ax=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 /ax=x+1 goto :while1 ) echo "OUTSIDE LOOP" echo The Status is %errorlevel% call:check_file exit /b %errorlevel% ) 

简化代码。

循环(最多5次)调用过程。 如果进程没有返回错误级别,如果在日志文件中没有找到搜索到的字符串,则离开循环。

  set "logFile=c:\logs\App_Error.log" for /l %%x in (1 1 5) do ( echo Loop %%x > "%logFile%" call abc.exe if not errorlevel 1 ( find "Kitchen.Error.NoRepDefinied" "%logFile%" >nul 2>&1 || goto :endLoop ) ) :endLoop 

我不确定你试图得到的错误errorlevel值。