• ベストアンサー

コマンドプロンプトで

コマンドプロンプトで、  findstr /n aaaa test1.txt > test2.txt とすると、検索した"aaaa"の行がtest2.txtに保存されますが、  findstr /n aaaa test1.txt > test1.txt とするとtest1.txtのデータがなくなります。 これは何故かということと、検索結果を検索したファイルに保存する方法を教えてください。 お願いします。

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

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.3

ANo.#2の補足に対する回答です。 検索結果だけを"test1.txt"に出力したいということでしたら、単純に">"や">>"で"test1.txt"に出力する方法は使えません。 一旦、検索結果を"test2.txt"に出力した後、"test1.txt"を削除、"test2.txt"をリネームという面倒なコマンドの記述になります。 findstr /n aaaa test1.txt > test2.txt && del test1.txt && ren test2.txt test1.txt "&&"は直前のコマンドが終了コード(環境変数:%ErrorLevel%にセットされます)として0を返した時に、直後のコマンドを実行します。 "findstr"の場合、検索する文字列が見つかった時に終了コード0を、見つからなかった時に終了コード1を返しますので、上記のコマンドを実行して、"test1.txt"内に"aaaa"が見つからない時には、元の"test1.txt"が残ります。 ("del"コマンドが実行されないので、"ren"コマンドも実行されず、出力先ファイル"test2.txt"も作られたまま残ってしまいます。)

akaku
質問者

お礼

丁寧な説明をありがとうごさいました。

その他の回答 (2)

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.2

ファイルへのリダイレクトに">"を使用すると、 findstr /n aaaa test1.txt > test1.txt の実行の前に、出力先として、先に"test1.txt"が新規のファイルとして作成されてしまいます。 ">>"を使用することで、ファイルの最後に追加されます。 findstr /n aaaa test1.txt >> test1.txt

akaku
質問者

お礼

回答ありがとうございます。 なぜ空白ファイルになるかは分かりました。 ありがとうございました。

akaku
質問者

補足

すみません。 書き方が悪かったのですが、 検索結果を検索したファイルに上書き保存をしたいのです。 もし方法をご存知なら、教えてください。 お願いします。

  • hok212
  • ベストアンサー率66% (100/150)
回答No.1

結果を上書きする場合は 「 > 」 で、追加書込みは「 >> 」です。 上記の説明でお分かりと思いますが、「 > 」は上書きなので元のtest1.txtの内容がなくなり結果のみ記録されるのです。

akaku
質問者

お礼

回答ありがとうございます。

関連するQ&A