こんにちは。東です。
今回も小ネタ的な内容となりますが、Windowsでファイル名が連番の空ファイルを作成する方法を記載致します。
ちなみに、ファイルを作成するにあたって、ざっくりと前提条件があったのでお伝えします。
- ファイル作成はコマンドで、且つ、ワンライナーで行いたい
- 連番とする箇所を自由に決めたい(test1.txt と 1_test.txt のどちらも作成可能なコマンドにしたい)
次に、上記条件を満たすコマンドは何か無いか…と探しておりましたところ、for文であれば条件を満たせそうということが分かりましたので、今回はfor文を利用してファイル作成を行います。
コマンドは下記となります。
1 2 |
>cd [ファイルを作成したいディレクトリ] >for /l %i in (1,1,10) do @type nul 1>test%i.txt |
cdコマンドにて、C:\temp ディレクトリ移動後にファイル作成しておりますが、(言わずもがなですが)for文のファイル指定をフルパスで書いてあげれば、ワンライナーでファイル作成が可能です。
次に、forコマンドですが、オプションの説明等、1つ1つ分けてご説明します。
・/l : ループ処理を実行するためのオプションです。
・%i : 変数の指定となります。Windowsの変数はアルファベット1文字で指定するみたいです。
・in (1,1,10) : こちらは左から順に、開始値、ステップ値、終了値、になります。
- 開始値:変数に導入される最初の数字を定義します。
★例:(5,1,10) として、上記コマンドを実行すれば test5.txt~test10.txt が作成されます。 - ステップ値:変数に導入される数字の間隔を定義します。
★例:(1,4,10) として、上記コマンドを実行すれば test1.txt,test5.txt,test9.txt が作成されます。 - 終了値:forコマンドが処理を終了する数字を定義します。
★例:(1,2,40) として、上記コマンドを実行すれば test1.txt,test3.txt,test5.txt … test39.txt が作成されます。
・do @type nul 1>test%i.txt : こちらでファイル作成を行っているのですが、下記を行っております。
- type nul でNull値を出力し、標準出力を test%i.txt ファイルへリダイレクト(データが何もないので、ファイル作成のみ行われる)
- @type とすることで、実行するコマンド文字列をプロンプト上に表示しない
※仮に1万ファイル作成する、となった場合に @ が無いと1万行のコマンド文字列が表示されます。。。 - この形式であれば、test%i.txt と指定すれば test1.txt の形に、%i_test.txt と指定すれば 1_test.txt の形でファイル作成ができます。
今回の記事はこれで終わりとなります。
閲覧頂きありがとうございました。本記事が皆様のお役に立てれば幸いです。