SSブログ

設計メモ:zipファイルの自動解凍とフォルダ構成変更 [プログラミング学習]

メモ:MMD俺得モデルフェスティバル2 紹介動画振り返り
・zipファイルの自動解凍、フォルダ名、フォルダ構成変更
 フォルダ構成の変更は、zipがフォルダを含む場合と含まない場合がある。
 解凍は、zipごとにフォルダを作る形式で解凍した結果、フォルダの中にフォルダができてしまう。しかし、zip内にフォルダを含むかどうかは現実的には解凍前にチェックできない。フォルダを作らないで解凍すると、フォルダを含まなかった場合にファイルが散らばることになる。
 手作業で不要なフォルダ構造を修正したが、多かったので自動でスクリプト組めばよかった。


とりあえずWSHで組むとして、設計だけやっとくか。
0. 解凍処理について
解凍には7-zipのコマンドラインを使用する。.rar,lzh,zipなど、広範囲のアーカイブファイルを使用できるし。
Windows標準でついている解凍はrarに対応していないのと、Tempフォルダを作ってしまうので今回未採用。tempは消す、というのもありだけど、アーカイブファイルに未対応はつらい。

パスワード付きのアーカイブはスクリプト解凍の対象外。MMD関連でアーカイブファイルにパスワードを賭けている場合は、readmeを読ませたりなど、あえて注意を引かせているケースなので、ここは配布元の意志に沿うことにする。
今のところレアケースだから、別対応でも十分可能だろう。

調べた結果、アーカイブファイルが1つのフォルダにある前提で、以下のコマンドライン一発でいける。
パスは自分の環境では通っていないので、通すかDirectory参照するかは後で考える。

7z x * -o* -aot

-aot auto rename existing file (for example, name.txt will be renamed to name_1.txt).
-o (Set Output Directory)

コマンドラインで実行すると、結果がコマンドプロンプトに出力される。この結果をファイルに出力して使用すると、楽な気がするが、フォルダ構成変更との兼ね合いがあるな。

とりあえず、WSHでは同期処理として実行。
1. フォルダ構成の変更について
解凍用ディレクトリ内にできたSubDirectoryを一括取得して、再起でDirectoryを走破する。
Directory内にフォルダが1つ、ファイルがない場合はフォルダ構成修正対象とし、サブフォルダに入る。
サブフォルダでも同じことを実行。それにより、データが入っている本来のディレクトリを特定。
サブディレクトリを一時的フォルダ名を示すフォルダにリネームの上、出力先フォルダに移動。元の不要なフォルダ構造を削除の上、サブディレクトリを元のフォルダ名に変更する。

2. フォルダ名の修正について
想定した使用条件だと、フォルダ名に連番 + 特定IDを付与する必要がある。これを解凍後のフォルダに付与するにはどうすればいいか、だが。
これは、一度解凍前のアーカイブファイルに最初に振ってしまって、そのフォルダ名から連番 + 特定IDを抽出し、解凍後のフォルダに付与すればいけるな。

連番 + 特定ID付与は別途事前にRenameを一括実施でいいか。

連携はどうするかは、ちょっと検討必要か。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:blog

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0