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