我是批处理脚本的新手,我需要一个脚本,该脚本循环遍历具有3个日志文件的目录,并检查错误和警告。我不太清楚循环的位。我写了一个小代码..帮助我纠正它...
for %%a IN ("C:\Program Files (x86)\<installloc>\*.log*")
do
findstr /c:"0 Warnings" %%a
set result1=%errorlevel%
findstr /c:"0 NonFatalErrors" %%a
set result2=%errorlevel%
findstr /c:"0 FatalErrors" %%a
set result3=%errorlevel%
done
if %result1% & %result2% & %result3% EQU 0
(
exit 0
) else (
exit 1
)
这是我认为您正在尝试做的
for %%a IN ("C:\Program Files (x86)\<installloc>\*.log*") do (
for %%b in (Warnings NonFatalErrors FaltalErrors) do (
findstr /l /c:"0 %%b" "%%~fa"
if errorlevel 1 exit /b 1
)
)
exit /b 0
这将在文件夹中的所有文件中搜索任何指示的字符串。如果未找到它们,则以错误级别1退出。如果在所有文件中找到所有字符串,则以错误级别0退出。
如果您拥有10 Warnings
(示例),则此代码将失败,因为找到了搜索到的文本。必须根据实际文件内容更好地定义搜索字符串。或者,如果搜索文本位于行的开头,则可以添加/b
到findstr
命令中,以指示匹配项应发生在行的开头。
在您的原始代码中存在一些问题:
在批处理文件中,for
命令(for ... in (set)
)中设置的右括号必须与do
关键字位于同一行,并且for
命令中的行块(如果有多个)必须括在括号中,以便解析器可以知道打算重复哪几行。并且此块的开括号必须与do
关键字在同一行。
另外,AND
批处理if
命令中没有运算符。如果您想保留原始的sintax,则应写为
if condition if condition if condition command
然后,仅当这三个条件为真时才执行命令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句