2011年8月24日水曜日

多量のファイル群をフォルダにまとめたい

MS-DOSのバッチ処理を使えば、一連のフォルダ群をまとめて作成することが可能です。

下記のような1次メッシュごとに切り出したeps形式のファイル群をフォルダにまとめてみます。
20万分の1日本シームレス地質図を1次メッシュごとに分割し、eps形式で保存したファイル群(投影法の違いによってgcsとutmがある)

まず、下記のようなエクセルファイルを作成して、フォルダ群を作成します。フォルダ名はここでは、eps_b_****としました。mkdirはMS-DOSでフォルダを作成するコマンドです。

エクセルで作成したいフォルダのリストを作成する。A列にはmkdirといれる。
このエクセルファイルをカンマ区切りのCSV形式で保存して、ファイル群のフォルダ内に入れます。拡張子をバッチファイル形式(.bat)に変更します。

[カンマ区切りの場合,バッチファイルの実行後もしエラーが出る場合は,このバッチファイルをテキストエディタで開いて,カンマの部分を半角スペースに置換し,スペース区切りに変換して下さい]  

エクセルファイルをCSV形式で保存し、拡張子を.batに変更する
 MS-DOSコマンドプロンプトをアクセサリから開いて、cdでファイル群に移動します。バッチファイル名を入力してバッチ処理を実行します。もちろん、Explorer上でバッチファイルをそのままダブルクリックしても実行できます。


 実行後、 dirと入力すれば下記のようにフォルダ群ができていることがわかります。





 Explorerで確認するとフォルダ群ができています。

バッチ処理でまとめて作成したフォルダ群

 つぎに、gcs形式のファイルをフォルダに移動します。同様に下記のようなエクセルファイルを作成しバッチ処理を実行すればOKです。moveはMS-DOSでファイルを移動するコマンドです。



なお、作成の際に、下記のようにE列に1次メッシュの番号のリストを用意しておいて下記のようにすれば比較的手早くつくることができます。B1のセルで =E1&"b_gcs.eps"と入力し、それを下の行すべてに適用します。



Cの列はDの列にフォルダ名のリストを入れておき、C1の列で =D1&"/"&B1と入力し、それを下の行すべてに適用します。


最終的に、DとEの列は削除する必要がありますが、その際に、できあがったBとCの列をすべて選んで、形式を選択してコピー>>>値 のみを選んでB列とC列を上書き保存しておきます。そうしないとDとEの列を削除した際に、BとDの列の計算結果が消えてしまいます。

作成したエクセルファイルをCSV形式でファイル群のフォルダに保存し、拡張子をbatに直します。

[カンマ区切りの場合,バッチファイルの実行後もしエラーが出る場合は,このバッチファイルをテキストエディタで開いて,カンマの部分を半角スペースに置換し,スペース区切りに変換して下さい]  



上記と同様にMS-DOS上でバッチファイルを実行します。 (Explorer上で直接バッチファイルをダブルクリックしても実行できます)


gcs形式のファイル群が個別のフォルダ群に移動します。


同様に下記のようなエクセルファイルを作り、CSV形式で保存すればutm形式のファイル群が個別のフォルダに移動します。





CSV形式のファイルをフォルダ群に保存して、拡張子をbatに変更します。

[カンマ区切りの場合,バッチファイルの実行後もしエラーが出る場合は,このバッチファイルをテキストエディタで開いて,カンマの部分を半角スペースに置換し,スペース区切りに変換して下さい]   


MS-DOS上で実行すると、まとめてutm形式のファイルがフォルダ群に移動します。(Explorer上で直接バッチファイルをダブルクリックしても実行できます)


 最終的にはexplorer上では下記のような形になり、1次メッシュごとにgcsとutm形式のファイル群を個別のフォルダにまとめることができました。


いろいろと試してみて下さい.