如果我在日志文件中找到字符串"found",如何编写批处理脚本来循环目录中的日志文件并生成"filename.found"?



我有一个目录"D:\logs",其中包含许多日志文件,例如:HRS.log,SRM.log,KRT.log,PSM等.log。 此日志文件中的每一个都可能有也可能没有"找到"的字符串。如果日志文件包含字符串"found",那么我必须生成"fileName.found",例如:"D:\flags"文件夹中的"SRM.found"文件。 我已经编写了以下脚本,但无法继续:

@echo off
setlocal ENABLEDELAYEDEXPANSION
for  %%f IN ("D:logs*.log") do (
findstr /i "found" "%%f" >NUL
if  "!ERRORLEVEL!"=="0" (
echo.>"D:flags%%f.found"
) 
)
pause 
exit /b
)
@echo off
for /f "delims=" %%A in (
'2^>nul findstr /i /m "found" D:logs*.log'
) do echo( > "D:flags%%~nA.found"

findstr /i可以在文件中搜索不区分大小写的字符串found并使用参数/m,该参数仅允许返回包含该字符串的文件路径。这可以使其更有效,因为for /f命令仅返回感兴趣的文件路径。

%%~nA使用for变量修饰符n这是没有扩展名的文件名。查看for /?以获取有关可用修饰符的更多信息。

好的,这是我为上述问题找到的解决方案:

@echo off
setlocal enabledelayedexpansion
for  %%f IN ("D:logs*.log") do (
find "found" "%%f" >NUL
if  "!ERRORLEVEL!"=="0" (
echo.>"D:flags%%~nf.found"
) 
)
pause
exit /b
)

相关内容

最新更新