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