ファイルの圧縮について -その2(応用編)-

シンです。ようやく夏の暑さも峠を越えたようですが、みなさんは元気にお過ごしでしょうか。
さて、前々回の私のブログで「ファイルの圧縮について」ということでファイルの圧縮のしくみや代表的な圧縮形式などを簡単にご紹介しましたが、今回は、その応用編とでも言うのか、ファイルの圧縮ソフトは単なる圧縮・解凍だけでなくこんなこともできますよ、というお話です。

1.圧縮ソフトの新たな使用法発見のきっかけ

前々回でも述べた通り、私は、RARという圧縮形式に対応したWinRARというソフトを愛用しており、日常はこれ一本で主にzipファイルの圧縮・解凍をしていますが、ある仕事がきっかけでこのソフトの応用的な使い方を発見(というとちょっと大げさですが)したのです。

その仕事というのは、カラーでまとまった枚数をプリントアウトするものでした。この仕事、例えば1,000件分の出力であればファイルも1,000個に分かれて入ってきます。これを1件ずつプリントアウトしていたのでは送りモレやダブりが発生する可能性がありますし、1,000件からあるものを出力した後で1枚ずつ確認するのも現実的ではないので、出力ミスを防ぐには、どうしてもある程度ページをまとめてプリントアウトすることが必要不可欠でした。

幸いファイルは全てPDF形式なので、Adobe Acrobat Professional版(無償版のAdobe Acrobat Readerでは連結は出来ません。)であればバラバラのPDFを連結することはできます。しかし、このデータを連結するというのがまず単純には行きませんでした。というのも、このデータはグループごとにフォルダが分けてあり、グループによってはさらに下層にフォルダが分かれているものもあったからです。

例えば、「000」というフォルダの中に数百件のファイルがあり、別の「002」というフォルダの中にはさらに「A」「B」「C」…といったフォルダがあり、それぞれに数十件ずつファイルが入っているという具合です。「000」というフォルダの中にあるデータを連結することは簡単ですが、「002」のフォルダの中にさらに「A」「B」「C」…というフォルダが分かれているものはちょっと面倒です。

普通のやり方だと、フォルダ「A」「B」「C」…の中に入っているファイルをそれぞれ連結して、さらに「A」「B」「C」…ごとに連結したものを一本に連結することになります。しかし、フォルダの数が増えれば増えるほど、この作業は大変になりますし、連結する順番を間違えてしてしまう危険も出てきます。

とはいえ、最初は他に良い方法も思いつかなかったので、この方法(いわゆる「正攻法」とでもいうのか)で6,000件分ほどの出力をしてみたところ、出力の時間よりもデータ処理の時間の方が長くかかってしまい、全体として朝始めて夜までかかるような膨大な時間のかかる大変な作業になってしまいました。これではいけないと、別の方法を考える必要が出てきました。

では、いっそのこと「A」「B」「C」…のフォルダに入っているファイルをそれぞれ移動して全て「002」のフォルダに集めて連結した方が早いのかとも考えましたが、このやり方には大きな欠点があります。こうしてしまうとファイルが移動する前に「A」「B」「C」…のどれに入っていたのか分からなくなってしまい、「002」-「A」→「002」-「B」→「002」-「C」→…という順番でフォルダごとにまとめて出力することができなくなってしまうからです。

2.問題解決の糸口

幸いにも、ファイル名を連番に変更してくれるソフト(一般に「リネームソフト」と呼ばれています。)の中には、フォルダが下層に分かれていても、そのフォルダをまたがって処理できるものがあります。(私は「Flexible Renamer」という無料のソフトを使っています。)例えば、「002」のフォルダに「A」「B」「C」の3つのフォルダがあり、それぞれに20個ずつファイルが入っているとすると、「A」の中のファイルを001~020、「B」の中のファイルを021~040、「C」の中のファイルを041~060、といった風に連番をふることができるので、これをこの番号順に連結してやれば、元のフォルダの順番に連結できることになります。

ただ、これでもまだ問題は残っています。ファイルを連結するには、連結すべきファイルが全て同じ階層になければ作業効率が悪くなります。階層が違うものがあると、階層を行ったり戻ったりして連結するファイルを指定しなければならなくなるからです。ファイル名が連番になっているとはいえ、連結のリストを目視で抜けがないか確認するのでは見落としが起きる可能性があります。また、連結した後のファイルのページ数を見て途中にファイルの抜けがあると気付いても、何番目のファイルが抜けているかは連結後のファイルを見ても分かりません。どうやら、フォルダでいくつもの階層に分かれているファイルを、どうやって間違いなく同じ階層の一つのフォルダにまとめることができるかというのがこの問題のカギになりそうです。

3.めでたく問題解決へ

どうにかしてフォルダの階層の垣根だけをとっぱらってくれるような、そんな都合のいいソフトはないものかと、WebでフリーソフトダウンロードサイトのVector等、あちこち探し回りましたが、一向に見つからず、どうしたものかと考え込んでいた時、ふと、そういえば私が日頃使っているWinRARという解凍ソフトの解凍時のオプションに「Do not extract paths」(英語版のためわかりにくいですが「パスを解凍しない」の意)という項目があったことを思い出し、ひょっとしてこれが使えるかも知れないと思い立ったわけです。

もちろんこれは圧縮ファイルを解凍する時のオプションなので、とりあえずは対象のファイルを、例えば「フォルダ1」というフォルダの中に全て入れ、フォルダごと圧縮する必要があります。ちなみに圧縮形式は、このソフトが扱うのを最も得意とするRar形式にします。どうせすぐに解凍してしまうのですから問題ありません。数百件、ものによると数千件あるファイルの圧縮でもWinRARは高速に処理してくれるので、ほどなく圧縮できます。それから先ほどの「Do not extract paths」のオプションにチェックを入れて解凍してやればOKです。解凍は圧縮よりもさらに高速で、あっという間に終わってしまいます。解凍後は「フォルダ1」の中に、全てのファイルが連番で並んで入っている状態になっているので、これを適当な件数(ファイルの容量に応じて500件または1,000件くらい)ごとに連結してプリントアウトしてやればよいわけです。

この方法だと、フォルダの階層がどれだけ複雑に分かれていてもすべて同じ手順で作業でき、早くて間違いも起きません。(もちろん、ファイルはこの作業をする前にあらかじめ連番になるようリネームしておかなければならないことは言うまでもありませんが。)それにしても、解凍ソフトにこんな使い方があったとは、私もそれまで考えてもみませんでした。

おわりに

長々と説明して来ましたが、ご理解いただけましたか? この仕事の問題解決の方法として、もしかすると他にも方法があるのかも知れませんが、私にはこの方法以上に良いものは思いつきませんでした。残念ながら、WinRAR以外の解凍ソフトで同じことができるのか、調べるところまでは出来ていないのですが、みなさんも日頃使用している圧縮ソフトにそういった機能がないか、調べてみてはいかがでしょう。
もし自分が使っている圧縮ソフトにそういった機能がなくて、私の方法を自分でも試してみたいという方は、WinRARの試用版(40日間試用可)がありますので、試しに使ってみて気に入ったらシェアウェア代金を払ってあげてください。
確かに圧縮ソフトにお金を払う人というのは少数派かもしれませんが、この圧縮・解凍のスピードに一度慣れてしまうと、元には戻れなくなる快適さですよ。

☆WinRarの入手先☆

(日本語のサイト)

 (1ライセンス 2,625円)

(英語(開発元)のサイト)

 (1ライセンス 29ドル)

現在のような超円高のご時勢では、ドル建てで支払うことができればその方がお得なのは間違いないですが、問題は英語力と支払い方法ですね。
(ちなみに英語のサイトでも日本語版を含む各国語版がダウンロードできるようです。)

えっ、WinRARの宣伝じゃないかって? いえいえ、本当にいいソフトだと思うのでご紹介しているだけで、無理にお勧めしているわけではありませんので、どうぞ誤解のありませんように。ということで、今回はこの辺で。

コメント