我有以下批次代码:
set checkerr=
for /f "delims=" %%a in ('findstr "Error" %LOG%') do @set checkerr=%%a
echo %checkerr%
if "%checkerr%" NEQ [] GOTO sendmail
但它不起作用,我希望它只在日志文件中找到文本字符串“Error”时才发送邮件
注意:日志文件中的错误可能如下所示:
20131117185439: Error: Field not found - <blablabla>
20131117185445: General Script Error
20131117185445: Execution Failed
20131117185445: Execution finished.
所以有空格和其他字符等
此致
答案 0 :(得分:3)
&&
运算符在前一个命令生成errorlevel零时执行以下命令,因此这应该是等效的,并且当在日志文件中找到'Error'时将转移到:sendmail
标签
findstr "Error" "%LOG%" >nul && goto :sendmail
该协同运算符为||
,并且它在非零的错误级别上执行以下命令。
要检查变量是否为空,您可以使用:
if not defined variablename goto :sendmail