如果我在日志文件中找到字符串 "found",如何编写批处理脚本来遍历目录中的日志文件并生成 "filename.found"?
How to write a batch script to loop through logfiles in directory and generate a "filename.found" if i find the string "found" in the log file?
我有一个目录 "D:\logs",其中包含许多日志文件,例如:HRS.log、SRM.log、KRT.log、PSM.log 等。
每个日志文件中可能有也可能没有字符串 "found"。如果日志文件包含字符串 "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
仅允许 return 包含该字符串的文件路径.这可以使其更有效,因为 for /f
命令 return 仅对文件路径感兴趣。
%%~nA
使用 n
的 for
变量修饰符,它是没有扩展名的文件名。查看 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
)
我有一个目录 "D:\logs",其中包含许多日志文件,例如:HRS.log、SRM.log、KRT.log、PSM.log 等。 每个日志文件中可能有也可能没有字符串 "found"。如果日志文件包含字符串 "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
仅允许 return 包含该字符串的文件路径.这可以使其更有效,因为 for /f
命令 return 仅对文件路径感兴趣。
%%~nA
使用 n
的 for
变量修饰符,它是没有扩展名的文件名。查看 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
)