目次
「>」と「>>」はどちらもファイル出力使うコマンド
バッチファイルにおいて、「>」と「>>」はどちらもファイル出力に使用するコマンドです。
使い方はどちらも同様で、バッチコマンドによって出力される文字列を指定したファイルに送ります。以下のような形です。
1 2 |
echo [ファイルに書き出したい文字列] > [書き込みファイル名] echo [ファイルに書き出したい文字列] >> [書き込みファイル名] |
同様の使い方をする2つのコマンドですが、その機能は異なり、「>」はファイルの上書き、「>>」はファイルに追記になります。その違いを以下で詳しく見ていきます。
「>」はファイルを上書き
まずは、「>」からです。「>」はファイルを上書きするコマンドです。
例として、以下のバッチコマンドをコマンドプロンプト上で実行してみましょう。
1 |
echo このメッセージをファイルに書き込む > file.txt |
実行後、「file.txt」ファイルができているはずです。ファイル内を確認してみると、以下のようになっています。
ファイルに「このメッセージをファイルに書き込む」と出力されました。
では続けて、もう一度同じコマンドを実行してみましょう。出力する文字を少し変えます。
1 |
echo このメッセージは2回目です > file.txt |
実行後、再びファイル内を確認します。
ファイルに「このメッセージは2回目です」と出力されました。
ファイルが上書きされ、一回目で出力した内容「このメッセージをファイルに書き込む」は残っていません。このように、「>」は文字列を出力する際、前のメッセージを削除して上書きします。
最後に「file.txt」ファイルは削除して次節へ進んで下さい。
「>>」はファイルに追記
次は、「>>」です。「>>」はファイルに追記するコマンドです。
「>」の時と同様にコマンドを実行します。ただし、「>」を「>>」に変えました。
1 |
echo このメッセージをファイルに書き込む >> file.txt |
「file.txt」ファイルの中身を確認すると以下のようになります。
「>」の時とまったく同じです。
では、2回目の出力です。「>>」を使っています。
1 |
echo このメッセージは2回目です >> file.txt |
結果は以下のようになりました。
前の出力が消えていません。
つまり、「>>」は前の文字の下に追記する機能を持っているということです。一方、「>」は一からファイルを作りなおすコマンドであると覚えていきましょう。
「>>」を使うと前の文字が消えないので、書き出すファイルと同名のファイルがあればそれを削除してから「>>」を使用するケースがよくあります。ファイルがあればそのファイルを消すという動作をするバッチコマンドに関しては、「ファイルの存在有無で判断する@if(条件分岐) -コマンド別解説-」が詳しいですので参考にして下さい。
ファイルに文字列を追加書き出す際、下記のようにしますと、「> の使い方が誤っています」とエラーメッセージが出ることがあります。one_lineに、 という文字列が入っている場合です。
%one_line%>> memo.txt
スペースが入らないように”>>”を記述していたのですが、”>>>”のように認識されているようです。
この問題に気づくのに、結構時間がかかりました。まだ解決していませんが・・・