HOWTO · Batch

バッチファイルを使用してテキストファイルに書き込む

このチュートリアルでは、バッチスクリプトを使用したテキストファイルの作成について説明します。

このページの内容

ECHO コマンドと > を使うとテキストファイルを作成または上書きでき、>> を使うと既存の内容を残したままテキストを追加できます。これらの演算子は Windows コマンドプロンプトと .bat スクリプトの両方で使えます。以下の例では、各ファイルに書き込むコマンドとテキストを示します。

新しいテキストファイルを作成する

次のスクリプトは、現在の作業ディレクトリにある myfile.txt に1行を書き込みます。

@echo off
echo This is my first line of text > myfile.txt

ファイルには This is my first line of text と書き込まれます。この例の文字列は英語のまま表示されます。myfile.txt が既に存在する場合、> によって内容が置き換えられます。別の場所に書き込むには、C:\Users\YourName\Documents\myfile.txt のような完全な保存先パスを指定してください。保存先のディレクトリはあらかじめ存在している必要があります。@echo off を指定すると、スクリプトの実行中にバッチコマンドが画面に表示されません。

既存のテキストファイルに追記する

現在の内容を残して末尾に1行追加するには >> を使います。次の単独で実行できる例では、まず既知の内容のファイルを作成し、その後に2行目を追記します。

@echo off
echo First line> myfile.txt
echo Added line>> myfile.txt

スクリプトの実行後、ファイルには First line があり、その次の行に Added line が続きます。これらの表示文字列は英語のままです。実行するたびに Added line が新たに追加され、前のテキストが置き換えられることはありません。最初のコマンドは例の準備として > を使うため、既にデータが入っているファイルに合わせてスクリプトを使う場合は、そのコマンドを削除してください。

テキストファイルに複数行を書き込む

複数の ECHO コマンドをかっこで囲み、グループ全体を一度だけリダイレクトします。

@echo off
(
echo First line
echo Second line
echo Third line
) > myfile.txt

各コマンドはそれぞれ別の行を書き込みます。グループ全体を > でリダイレクトするため、実行すると対象ファイルの内容はこの3行に置き換わります。既存の内容の後にグループを追加するには、> を >> に変更します。

テキストファイルで変数を使う

SET で値を定義し、行を書き込むときにパーセント記号で囲んで展開します。

@echo off
set "myVariable=Hello from Batch"
echo %myVariable%> myfile.txt

ファイルには Hello from Batch と書き込まれます。この表示文字列は英語のままです。引用符を付けた SET の形式を使うと、誤って末尾に空白が値に含まれるのを防げます。引用符自体は値に含まれません。変数の値を既存のファイルに追加する場合は、代わりに >> を使います。

コマンドの出力をテキストファイルに書き込む

DIR のようなコマンドをリダイレクトして、一覧を保存できます。

@echo off
dir > directory_list.txt

これにより、現在のディレクトリの一覧が directory_list.txt に作成または上書きされます。表示される項目はコンピューターと作業ディレクトリによって異なるため、ファイルの内容も変わります。例の出力に含まれる文字列は英語のまま表示されます。既存のテキストの後に新しい一覧を追加するには、dir >> directory_list.txt を使います。

既存のテキストファイルを更新する

タスクで「更新」が何を意味するかに応じて演算子を選びます。>> は既存の行を残して新しいテキストを追加し、> はコマンドが出力するテキストでファイルの内容を置き換えます。たとえば、echo Status: complete >> myfile.txt はステータス行を追加します。既存の行を残したまま特定の行だけ変更したい場合は、その操作向けに作られたファイル編集ツールを使用してください。ファイルを読み込んで書き直す FOR /F ループは、一般的で安全な置き換え方法ではありません。空行や、Batch の特殊文字を含むテキストが変更されることがあります。

よくある質問

  1. テキストファイルを作成するにはどうすればよいですか? ECHO と > を使います。ファイルがなければ作成され、既存の内容は置き換えられます。
  2. 既存のテキストを置き換えずに追記するにはどうすればよいですか? >> を使います。
  3. 複数行を書き込むにはどうすればよいですか? 複数の ECHO コマンドをかっこで囲んだブロックに入れ、そのブロックをリダイレクトします。
  4. 行に変数を含めることはできますか? できます。SET で変数を定義し、ECHO コマンド内で %variableName% のように展開します。
  5. コマンドの出力を保存するにはどうすればよいですか? コマンドの後に > または >> を付けると、出力先ファイルを置き換えるか、末尾に追加できます。