必要があって、多くの空フォルダをまとめて作成することになった。
Excelなどを利用して、B列にフォルダ名を指定し、A列にmkdir を記述して、まとめてバッチファイルを作成するという荒業をやっていましたが、なんだか美しくない。
それで、下記のようなバッチコマンドを作ってみました。
ちなみにDOSプロンプトのバッチファイルヘルプは大変に不親切で、よくわかりませんでした。
for /F “eol=; tokens=2 delims=, ” %m in (name.csv) do mkdir %m
/F ファイル名セットの宣言 (他にはループの /Lや /Iなどがある)
eol=; ファイルの先頭に;があれば、無視する
tokens=2 2列目をforループへ引き渡す(複数の場合は、カンマで指定する)
delims=, 区切り記号(CSVなので、カンマ)
name.csv 読み込むファイル名。ファイルには、2列目に作成するフォルダ名を記述しておく。
これで名簿ファイルなどから、名前ごとのフォルダを自動作成できます。
ただし、名前に空白(全角も)が含まれていると、読み込みは空白前までになります。
なお、直接コマンドで実行するのではなくて、バッチファイルにするときは、%を%でエスケーブするので、%%とします。
たとえば、1から10まで 2ずつ増分しながら、表示するには次のようになる。
for /L %m in (1,2,10) do @echo %m
ファイル名を一覧表示するには、
for %m in (*) do @echo %m
フォルダ名を一覧表示するには、
for /D %m in (*) do @echo %m
となります。
ちなみに、かっこ内のファイルセットは、(*.exe) のようにワイルドカードで指定することができる。
ここでは、実行コマンドとして @echo で表示するだけだが、copy や move などのDOSコマンドを指定すれば、各種のバッチ処理が可能となる。