Categories: Windows

bat(バッチファイル)を用いて、コマンドの出力をファイルに書き込む方法

バッチファイルを実行した際に、コマンドの処理で得た出力を、ファイルに書き込むことができます。今回はバッチファイルを用いて、コマンドの出力をファイルに書き込む方法を紹介します。

「>」と「>>」を用いたファイル出力の違い

まず、バッチファイルを用いたファイル書き込みを行う上で重要となるのが「>」と「>>」によるファイル出力です。

単純な文字列を出力したい場合、「echo “文字列” > “出力ファイル名”」あるいは「echo “文字列” >> “出力ファイル名”」と記述します。

例えば、以下のように記述することで「test.txt」というファイルが作られ、その中にechoされた結果が書き込まれます。

echo test1 > test.txt
echo test2 > test.txt
echo test1 >> test.txt
echo test2 >> test.txt

さて、この二つのバッチをそれぞれ実行した場合に、結果はどうなるでしょうか?

正解は一つ目の「experiment1.bat」を起動すると「test2」のみが書き込まれたtest.txtができますが、「experiment2.bat」を起動すると、「test1」「test2」と2行の出力が得られます。

ファイル出力に「>」を用いる場合、こちらはファイルを上書きするコマンドになります。そのため、「experiment1.bat」では最初にtest1が書き込まれますが、その後test2の書き込みの際に再度test.txtが上書きされ、最後のtest2のみが出力となります。

一方、ファイル出力に「>>」を用いる場合、こちらは元のファイルに対して追記を行うコマンドになります。そのため、「experiment2.bat」では最初にtest1が書き込まれ、その後test2が追記されます。

その他の例としては、例えば以下のようにfor文と組み合わせることで、連番画像のファイルリストを作ることもできます。

for /l %%i in (1,1,10) do (
 echo %%i.jpg >> test.txt
)

出力結果は以下となります。

1.jpg 
2.jpg 
3.jpg 
4.jpg 
5.jpg 
6.jpg 
7.jpg 
8.jpg 
9.jpg 
10.jpg 

手動で作るのが大変なファイルも、バッチファイルを使いこなすことで簡単に作ることができる場合があります。

空白行を出力したい場合

空白の行を出力したい場合には、「echo.」とコマンドを記述する必要があります。

echo test1 >> test.txt
echo test2 >> test.txt
echo.      >> test.txt
echo test3 >> test.txt

上記のバッチファイルを実行すると、以下のような結果となります。

test1 
test2 
      
test3 

空白行が1行出力されていることがわかります。

特殊文字を表示する場合

一部の文字は、特別な記述方法を行う必要があります。該当するのは「<」「>」「|」「&」「^」「%」です。これらを出力したい場合には、以下の記述方法の通りの記述を行う必要があります。

出力したい文字記述方法
<^<
>^>
|^|
&^&
^^^
%%%

Haruoka