如何写一个批处理脚本来循环浏览目录中的日志文件,并在日志文件中找到 "found "这个字符串时生成 "filename.found"?

问题描述 投票:0回答:2

我有一个目录 "D:\logs",由许多日志文件组成,例如:HRS.log,SRM.log,KRT.log,PSM.log等。如果日志文件中包含字符串 "found",那么我必须在 "D:\flags "文件夹中生成 "fileName.found "例如:"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
)
string windows shell batch-file findstr
2个回答
3
投票
@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 /? 以获得更多关于可用修改器的信息。


0
投票

好吧,所以这是我找到的上述问题的解决方案,我问。

@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
)
© www.soinside.com 2019 - 2024. All rights reserved.