我有一个目录"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
)