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 に答える