- ベストアンサー
コマンドプロンプトで
コマンドプロンプトで、 findstr /n aaaa test1.txt > test2.txt とすると、検索した"aaaa"の行がtest2.txtに保存されますが、 findstr /n aaaa test1.txt > test1.txt とするとtest1.txtのデータがなくなります。 これは何故かということと、検索結果を検索したファイルに保存する方法を教えてください。 お願いします。
- みんなの回答 (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"も作られたまま残ってしまいます。)
その他の回答 (2)
- deadline
- ベストアンサー率63% (1239/1943)
ファイルへのリダイレクトに">"を使用すると、 findstr /n aaaa test1.txt > test1.txt の実行の前に、出力先として、先に"test1.txt"が新規のファイルとして作成されてしまいます。 ">>"を使用することで、ファイルの最後に追加されます。 findstr /n aaaa test1.txt >> test1.txt
お礼
回答ありがとうございます。 なぜ空白ファイルになるかは分かりました。 ありがとうございました。
補足
すみません。 書き方が悪かったのですが、 検索結果を検索したファイルに上書き保存をしたいのです。 もし方法をご存知なら、教えてください。 お願いします。
- hok212
- ベストアンサー率66% (100/150)
結果を上書きする場合は 「 > 」 で、追加書込みは「 >> 」です。 上記の説明でお分かりと思いますが、「 > 」は上書きなので元のtest1.txtの内容がなくなり結果のみ記録されるのです。
お礼
回答ありがとうございます。
お礼
丁寧な説明をありがとうごさいました。