2
IF find tcp.client == 1 

(


 findstr tcp.client *_chkpackage.log>summary.txt 
) 

ELSE 
(

#write only "filename" & "N/A" >> summary.txt

)

我想搜索一个文件,如果找到包含我需要的信息的行,它将在文件夹中的所有文本文件中搜索一些值,如果找不到,它将将该行写入文本字段,它将只写入文件名和“N/A”到线

我知道错了,但是我的编码技巧很烂,所以我不得不问

非常感谢你的回答

4

2 回答 2

3

根据您的“规范”工作的东西是:

@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“如果错误级别大于或等于 1”的意思是我交换了您的比较,因为if errorlevel 0即使错误级别等于 1 也是如此。

于 2012-12-03T11:08:22.100 回答
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
)
于 2012-12-03T13:06:28.043 回答