空ファイルの作成
バッチファイルやコマンドプロンプトで、中身が空のファイルを作りたい場面があります。たとえば、処理の完了を示す目印ファイルや、ログファイルの初期化などです。
このページでは、空ファイルを作る3つの方法を、コピーアンドペーストで使えるコード付きで紹介します。
結論:どの方法を使うか
| 方法 | ファイルサイズ | 既存ファイルがある場合 |
|---|---|---|
type nul > ファイル名 | 0 バイト | 上書き(内容が消える) |
copy nul ファイル名 | 0 バイト | コマンドプロンプトでは上書き確認が表示され、バッチファイル内では確認なしで上書き |
echo;>ファイル名 | 2 バイト(改行のみ) | 上書き(内容が消える) |
完全な 0 バイトのファイルが必要であれば、type nul か copy nul を使ってください。
いずれの方法も、同名のファイルが既に存在すると内容が消えてしまうことがあります。既存ファイルを残したい場合は、後述の「既存ファイルを上書きしない方法」をご覧ください。
type を使ったパターン
typeコマンドは本来、引数に指定したファイルの内容を表示するコマンドです。
type C:\Users\Public\Documents\sample.txt
>でリダイレクト先を指定すると、表示される内容をファイルに書き出すことができます。
type C:\Users\Public\Documents\sample.txt > C:\Users\Public\Documents\sample2.txt
上記のコマンドを実行すると、sample.txt の内容が sample2.txt にコピーされます。
この仕組みを利用し、typeコマンドの引数にnulを指定すると、何も書かれていない空ファイルを作成できます。nulは「何も出力しない特殊なデバイス名」で、読み込んでも中身が空になります。
type nul > <新規ファイル名>
type nul > %ファイル名%
以下はコピペ用のサンプルです。変数 FOLDER、FILE を、出力したいフォルダ・ファイル名に変更してください。
コマンドプロンプトの場合(コピーできます)
バッチファイルの場合
@echo off
setlocal
set FOLDER=%userprofile%\Documents\
set FILE=test.out
type nul > "%FOLDER%%FILE%"
endlocal
exit /b
copy を使ったパターン
copyコマンドは、ファイルをコピーするコマンドです。
copy A B
上記のコマンドを実行すると、ファイル A をファイル B にコピーできます。
copyコマンドでも、コピー元にnulを指定することで空ファイルを作成できます。
copy nul <新規ファイル名>
実行すると「1 個のファイルをコピーしました。」と表示されます。メッセージを表示したくない場合は、末尾に>nulを付けてください。
copy nul %ファイル名%
コマンドプロンプトの場合(コピーできます)

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
バッチファイルの場合
@echo off
setlocal
set FOLDER=%userprofile%\Documents\
set FILE=test.out
copy nul "%FOLDER%%FILE%" >nul
endlocal
exit /b
copyコマンドの詳細については、以下のページをご参照ください。
echo を使ったパターン
おなじみのechoコマンドでも、ファイルを作成できます。ただし、完全な空ファイルにはならず、2 バイトのデータが書き込まれます。
echo nul>ファイル名としたくなりますが、この場合nulは文字列として扱われ、「nul」という文字がファイルに書き込まれてしまいます。
そこで、改行だけを出力するecho;を使い、以下のように記述します。
echo;>ファイル名
この方法で作られるファイルには改行(CRLF)だけが含まれるため、ファイルサイズは 2 バイトになります。ファイルの存在確認用など、中身を使わない用途であれば問題になりません。
echo;>%ファイル名%
コマンドプロンプトの場合(コピーできます)
バッチファイルの場合
@echo off
setlocal
set FOLDER=%userprofile%\Documents\
set FILE=test.out
echo;>"%FOLDER%%FILE%"
endlocal
exit /b
echoコマンドの詳細については、以下のページをご参照ください。
既存ファイルを上書きしない方法
>によるリダイレクトは、同名のファイルが存在すると内容を消してしまいます。ファイルが無い場合だけ作成し、既にある場合は内容を残したいときは、追記を意味する>>を使います。
type nul >> sample.txt
何も追記しないため、既存ファイルの内容はそのまま残り、ファイルが存在しなければ空ファイルが作成されます。
また、if not existと組み合わせる方法もあります。ファイルの存在確認については、以下のページもご参照ください。
補足:PowerShell で作成する場合
PowerShell を使う場合は、New-Itemコマンドレットで空ファイルを作成できます。
New-Item sample.txt -ItemType File