little hands' lab

ドメイン駆動設計を布教したい

テンプレートファイルのコピー&リネーム数十回分を、コマンド一発でする方法 [Excel][コマンドプロンプト]

テンプレファイルを何回もコピーして名前を変えるの、面倒くさい!!

こんなことありませんか??
Excelなどでテンプレートとなるファイルがあって、それをもとにコピーして複数のファイルを作るとき・・

f:id:little_hands:20140202093043j:plain

これをコピーして名前を変えるとき、普通は以下の手順でやりますよね。

一回ファイルをコピーして・・・
f:id:little_hands:20140202093218j:plain

名前を変更!
f:id:little_hands:20140202093156j:plain

まぁ、これが1,2個ならいいでしょう・・・
ただ、10個、20個もあったら!?

コピー&リネームを何度も何度も繰り返さないといけません!!
面倒くさい!!!





そんなときはコレ!!

こういう時は・コマンドプロンプトのコマンドと、Excelシートの合わせ技を使います。

コマンドプロンプトには、こんなコマンドがあります。

copy [コピー元ファイル] [コピー先ファイル] 


たとえば、先ほどの操作をコマンドでやろうとすると・・・

copy "C:\仕事フォルダ\ファイルコピー\テンプレート.xlsx" "C:\仕事フォルダ\ファイルコピー\ファイル1.xlsx"

このコマンドで1発です。

この状態から・・・
f:id:little_hands:20140202094054j:plain

こうして・・・
f:id:little_hands:20140202094109j:plain

どん!!
f:id:little_hands:20140202094124j:plain



ただ、この方法は1回だと逆に面倒ですよね。
ところが!!

これが複数ファイルになると、かなりの威力を発揮するんです!!



たとえば、
「テンプレート.xlsx」
をコピーして、
「ファイル1.xlsx」
から
「ファイル20.xlsx」
までの20個のファイルを作りたいとします。


そういう時には、

copy "C:\仕事フォルダ\ファイルコピー\テンプレート.xlsx" "C:\仕事フォルダ\ファイルコピー\ファイル1.xlsx"
copy "C:\仕事フォルダ\ファイルコピー\テンプレート.xlsx" "C:\仕事フォルダ\ファイルコピー\ファイル2.xlsx"
 :
copy "C:\仕事フォルダ\ファイルコピー\テンプレート.xlsx" "C:\仕事フォルダ\ファイルコピー\ファイル20.xlsx"

このコマンドを20個分生成すれば、まとめてコピーしてコマンドプロンプトに「貼り付け」すれば一発で20個のファイルコピー&リネームをしてくれます。
ただ、このコマンドをいちいち手で書いていては、やはりあまり効率がよくありません・・・


ここで、Excelシートを使います!

先ほどほどのコマンドを、すこしずつ区切ってセルに入力します。
f:id:little_hands:20140202101348j:plain
A1~F1に入力されている文字をつなげれば、先ほどのコマンドになるのがわかりますね。

A1~F1のセルを、「&」でつないで・・・
f:id:little_hands:20140202095733j:plain

Enter!
f:id:little_hands:20140202095809j:plain

つながりましたね。
ここで、
B1セルに入っているのは、
「"」
じゃなくて
「 "」(半角スペースが1個入っている)
になっていることに気を付けてください。
そうしないと

copy "C:\仕事フォルダ\ファイルコピー\テンプレート.xlsx" "C:\仕事フォルダ\ファイルコピー\ファイル1.xlsx"

ではなく

copy"C:\仕事フォルダ\ファイルコピー\テンプレート.xlsx" "C:\仕事フォルダ\ファイルコピー\ファイル1.xlsx"

と、「copy」の後にスペースが入らず、エラーになってしまいます。


あとは、この式を下までコピーして・・・
(少し見ずらいので、画像クリックで拡大してご覧ください)
f:id:little_hands:20140202100032j:plain

一旦ほかのファイル名を消して・・・
f:id:little_hands:20140202100122j:plain


2個目のファイル名を記入
f:id:little_hands:20140202100311j:plain

あとは、2ファイルを選択して、この位置にカーソルを合わせて・・・
f:id:little_hands:20140202101506j:plain

ドラッグして・・・f:id:little_hands:20140202100558j:plain

離す!!
f:id:little_hands:20140202100717j:plain


すると、G列に作りたかったコマンドが作られていませんか!?!?
f:id:little_hands:20140202100901j:plain

あとは、G1~G20セルをまとめてコピーして、コマンドプロンプトにはりつけると・・・

一発!!
f:id:little_hands:20140202101030j:plain

コピー完了!!
f:id:little_hands:20140202101044j:plain

おおー!できましたね!!

そして、再利用へ・・・

いかがだったでしょうか。

このシートは、1度作ってしまえば、
あとは、C列のコピー元のファイル名、E列のコピー先のファイル名を変えれば何度でも、どんなファイル名でも使えます。
コピー先ファイルの名前が連番でなくても、シートから直接記入できるのでいくらでも応用できますね。

もちろん、VBAなどでもできるのですが、覚えることが非常に少なく誰にでも簡単に使えることがメリットだと思います。

Excelで文字列をつなげてコマンド生成というのは、コマンドプロンプトに限らずかなり応用の効くテクニックなので、今後他の使用方法も紹介していきたいと思います。