IF find tcp.client == 1
(
findstr tcp.client *_chkpackage.log>summary.txt
)
ELSE
(
#write only "filename" & "N/A" >> summary.txt
)
我想搜索在文件夹中的所有文本文件中搜索某些值的文件 如果找到包含我需要的信息的行,则将该行写入文本域 如果没有找到,它将只写文件名和“N / A”到行
我知道这是错的,但我的编码技巧很糟糕,所以我不得不问
非常感谢你的回答
答案 0 :(得分:2)
根据你的“规范”工作的东西就是那个:
@echo off
if exist summary.txt del summary.txt
for %%f in (*_chkpackage.log) do (
find "tcp.client" %%f>NUL:
IF errorlevel 1 (
echo %%f N/A >> summary.txt
) ELSE (
findstr "tcp.client" %%f >> summary.txt
)
)
type summary.txt
请注意,if errorlevel 1
表示“如果errorlevel大于或等于1”,我交换了您的比较,因为即使errorlevel等于1,if errorlevel 0
也为真。
答案 1 :(得分:2)
我假设点是点而不是正则表达式通配符,在这种情况下,您需要告诉FINDSTR进行文字搜索。
FINDSTR如果找到则返回成功,如果找不到则返回错误。如果先前命令失败,||
运算符将有条件地执行命令。
使用FOR循环单独获取每个文件,并添加一个永远不会匹配的附加文件(nul)以强制在输出中包含文件名。
将整个构造括在括号中并重定向整个块
@echo off
>summary.txt (
for %%F in (*_chkpackage.log) do findstr /l "tcp.client" "%%F" nul||echo %%F N/A
)