1

n行のテキストファイルがあります。m個の行には、関心のある文字列が含まれています(m <= n)。文字列を含む単一の行(最初の出現など)のみを新しいテキストファイルにコピーするバッチファイルが必要です。findstrコマンドを使用すると、文字列を含むすべての行がコピーされます。

ありがとう!ポール・サフィエ

4

1 に答える 1

1

m行を検索するFINDSTRコマンドがあるとします(必要に応じて単純または複雑にすることができます)

findstr "search" "fileName.txt"

次に、FOR/Fループを使用してそのコマンドの結果を処理できます。GOTOを使用すると、最初の一致する行の後でループから抜け出すことができます。

for /f "delims=" %%A in ('findstr "search" "fileName.txt"') do (
  echo %%A >>"outFile.txt"
  goto :break
)
:break

FORコマンドは、バッチで使用できるより複雑なコマンドの1つです。多くのオプションがあります。HELP FOR入力するかFOR /?、コマンドプロンプトから、コマンドのヘルプを表示できます。

「DELIMS=」オプションは、行のトークンへの解析を無効にします。このオプションがないと、FOR/Fは各行をスペースまたはタブ文字で区切られたトークンに分割します。区切り文字のリストは、他の文字に設定することも、場合によっては何にも設定しないこともできます。

;FOR / FはデフォルトでEOL文字で始まる行をスキップするため、上記のコードはで始まる行をスキップ;します。EOL文字を任意の1文字に変更できます。ただし、一致する行が何で始まるかわからない場合は、EOLに使用する文字がわかりません。すべてのトークン解析とEOL行スキップを完全に無効にする構文は奇妙です。

for /f delims^=^ eol^= %%A in (...) do ...
于 2013-01-16T01:14:55.533 に答える