• ベストアンサー

ファイル内のある文字列以降を別ファイルに出力する方法

よろしくお願いします。 MS-DOSコマンドによるバッチで次のことを検討中です。 (find や findstr 等を使用して試行錯誤していますが、 なかなか良い案が思い浮かびません。) やりたいこと  あるファイルの内容を上から順に確認していき、  あるキーワードを発見したら、それ以降の行を全て  別のファイルへ出力する。 どうぞ、アドバイスのほど、宜しくお願い致します。 (OS: Windows Server 2003, Windows 2000 Server ,Windows XP pro)

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4896/10351)
回答No.1

for /f "delims=[]" %%A in ('find /n "文字列" ^<ファイル') do set /a N=%%A-1&goto next :next more +%N% ファイル > 別ファイル

nao-k
質問者

お礼

ご回答、ありがとうございます。 非常に助かりました。実行したところうまくいきました。 区切りの「"delims=[]"」と「^<ファイル」の「^」はどういう使い方(意味)でしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4896/10351)
回答No.3

^ についてはヘルプをそのまま本にしたような書籍には載ってないでしょうね。Microsoftサイトのどこかにちらとかいてあったような気がします。 この機能を知らなくても、 find /n "文字列" < ファイル >tmp.txt for /f "delims=[]" %%A in (tmp.txt) do set /a N=%%A-1&goto next で同じことが出来ます。 >区切りに「[]」を指定しているのが判りません・・・。 find /n "文字列" < ファイル名 してみるとわかると思います。

nao-k
質問者

お礼

何度もご回答、ありがとうございます。 >Microsoftサイトのどこかにちらとかいてあったような気がします 探してみましたが、見つかりませんでした。 本当に、ちらっと書いてある程度のようです。 >find /n "文字列" < ファイル名してみるとわかると思います。 試してみて、判りました。

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4896/10351)
回答No.2

delimsについては、for /? に解説があります。 ^< と ^ をつけないとリダイレクトはfor文の処理の時にリダイレクトしようとして、構文エラーになります。 ^< の ^ は「りダイレクトをちょっと待って」というような意味で、forの処理の時はリダイレクトと見なされず、find の処理の時にリダイレクトと見なされます。

nao-k
質問者

お礼

notnot様、ありがとうございます。 「^<」は、そのように使うのですね。 バッチプログラミング関連の本を読んだのですが、 (見落としたのかもしれませんが)判りませんでした。 非常に助かりました、ありがとうございます。 「delims」の意味は、区切りを指定するというのは知っているのですが、区切りに「[]」を指定しているのが判りません・・・。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう