如果其他功能.bat脚本 + findstr 命令


IF find tcp.client == 1 
(

 findstr tcp.client *_chkpackage.log>summary.txt 
) 
ELSE 
(
#write only "filename" & "N/A" >> summary.txt
)

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

我知道错了,但我的编码技能很糟糕,所以我必须问

非常感谢你的回答

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

@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",为此我交换了您的比较,因为即使错误级别等于 1,if errorlevel 0也是正确的。

我假设点是一个点而不是正则表达式通配符,在这种情况下,您需要告诉 FINDSTR 进行文字搜索。

如果找到,FINDSTR 返回成功,如果未找到,则返回错误。如果前一个命令失败,||运算符将有条件地执行命令。

使用 FOR 循环单独获取每个文件,并添加一个永远不会匹配的附加文件 (nul) 以强制在输出中包含文件名。

将整个构造括在括号中并重定向整个块

@echo off
>summary.txt (
  for %%F in (*_chkpackage.log) do findstr /l "tcp.client" "%%F" nul||echo %%F N/A
)

相关内容

  • 没有找到相关文章

最新更新