我是windows批处理编程的新手。如果发现特定的错误,我需要编写一个循环函数来执行任务。请参阅下面的代码。如何执行如果循环并使用批处理查找文本
我遇到了查找问题,它正在寻找Kitchen.Error.NoRepDefinied。脚本执行五次,即使找不到关键字。
请帮我确定问题,并解释这里有什么问题。任何帮助表示赞赏。我正在使用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%
)
好菜鸟的努力。 +1在寻求帮助之前投入工作!你有没有试过'echo!cnt!'来看看为什么'!cnt! neq 0'?使用'if!cnt!有没有什么不同? gtr 0'?另外,尝试添加'echo!Kitchen.Error.NoRepDefined!'以确保该变量在循环中具有期望的值。 – rojo 2014-11-24 16:52:03
要等到您的abc.exe填充并关闭日志,以便您可以正确使用它:启动“/等待abc.exe> C:\ Logs \ App_Error.log',而不是调用abc.exe> ... '在FOR循环中,'... set set/a cnt = %% a'可能会导致为零,因为'%% a'可能是一个文本。然后尝试像'... do set/a cnt = cnt + 1'。为了进行调试,请尝试'... do echo %% a' – JosefZ 2014-11-24 23:03:09