空ファイルの作成

にメンテナンス済み

Windows におけるバッチファイルは、扱い方を覚えてしまえば PC 操作がより快適になりますが、専門として取り扱っている方でなければ他プログラミング言語とも勝手が違いますし、取っつきにくいところかと思います。

このページではバッチファイルを利用して空ファイルを作る方法を、コピーアンドペーストで使えるコード付きで紹介しています。

type を使ったパターン

type 関数は本来、引数に指定したファイル内容を表示するものです。

以下のようにコマンドを実行した場合、sample.txt の内容がコマンドライン上に表示されます。

typeコマンドの標準的な使い方
type C:\Users\Public\Documents\sample.txt

引数に送り先を指定した場合、送り元ファイルの内容を送り先ファイルに反映されます。

A>Bの形式で使う
type C:\Users\Public\Documents\sample.txt > C:\Users\Public\Documents\sample2.txt

上記のコマンドを実行した場合、パブリックのドキュメントに保存されている sample.txt の内容がそのまま sample2.txt にコピーされます。

このtypeコマンドを使ってファイルを作成するためには、typeコマンドの最初の引数に nul を指定します。

typeコマンドで空ファイルを作成
type nul > <新規ファイル名>

このようにすることで、何も書かれていない空ファイルが、2つ目の引数に指定したファイル名で作成されます。

type nul > %ファイル名%

以下はコピペ用テストデータとなります。変数である FOLDER, FILE をそれぞれ、出力したいフォルダ、ファイル名に変更してください。

イメージ(コピーできます)

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>type nul > %userprofile%/Documents/empty.file

バッチファイルの場合

バッチファイルで空ファイルを作成するサンプル
@echo off
setlocal

set FOLDER=%userprofile%\Documents\
set FILE=test.out

type nul > %FOLDER%%FILE%

endlocal
exit

Copy を使ったパターン

copy コマンドは 2 つの引数を使って、データをコピーする関数です。

copyコマンドの標準的な使い方
copy A B

上記のコマンドを実行した場合、A というファイルを、B というファイルにコピーすることができます。

copyコマンドを使って空ファイルを作成する場合、前述したtypeコマンドと同様に、最初の引数に nul を指定します。

copyコマンドで空ファイルを作成
copy nul <新規ファイル名>

このようにすることで、何も書かれていない空ファイルが、2つ目の引数に指定したファイル名で作成されます。

copy nul %ファイル名%

以下はコピペ用テストデータとなります。変数である FOLDER, FILE をそれぞれ、出力したいフォルダ、ファイル名に変更してください。

イメージ(コピーできます)

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>copy nul %userprofile%/Documents/empty.file

バッチファイルの場合

バッチファイルで空ファイルを作成するサンプル
@echo off
setlocal

set FOLDER=%userprofile%\Documents\
set FILE=test.out

copy nul %FOLDER%%FILE%

endlocal
exit

copyコマンドの詳細については、以下のページをご参照ください。

echo を使ったパターン

馴染みのある方も多いechoコマンドでも、空ファイルを作成することが可能です。

注意点としては、完全な空ファイルは作られません。2 バイトのデータができてしまいます。

ですが、基本的に重複チェックなどに使うだけであれば、大きな問題とはならないかと思います。

echo は送り先を指定することで、引数をファイルに書き出すことができます。

ここまで聞くと、echo nul>%ファイル名%としたくなりますが、nul が「nul」という文字列として扱われてしまうため、うまくいきません。

ですので、改行を出力する、echo;と組み合わせ以下のように記述することで、空ファイルを作成することができます。

echoコマンドで空ファイルを作成
echo;>%ファイル名%

お気づきの方もいるかもしれませんが、この処理では完全な空ファイルではなく、改行のみを含むファイルが作成されます。

ファイルサイズは 2 バイトとなるのはこれが理由です。

echo;>%ファイル名%

以下はコピペ用テストデータとなります。変数である FOLDER, FILE をそれぞれ、出力したいフォルダ、ファイル名に変更してください。

イメージ(コピーできます)

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>echo;>%userprofile%/Documents/empty.file

バッチファイルの場合

@echo off
setlocal

set FOLDER=%userprofile%\Documents\
set FILE=test.out

echo;>%FOLDER%%FILE%

endlocal
exit

echoコマンドの詳細については、以下のページをご参照ください。

練習問題

練習問題

以下のコマンドの中で、作成されたsample.txtが0バイトでないものはどれでしょうか?

回答がサーバーに送信されることはありません
#PowerShell