Windowsの標準機能として、コマンドラインから圧縮機能を利用できるなら使いたいと思って少し試してみたのですが、展開用のexpandコマンドが正常に動作しないケースがありましたので履歴として残します。
(将来、このことを忘れて再びmakecabコマンドを使おうとした私が余計な時間を使わずに済むようにするためにも)
CABファイルはZIPファイルと同様に、エクスプローラでフォルダのように開くことが出来ます。
ただし、サブフォルダを含む階層的なフォルダは以下のような表示になります。
・c:\test\1.txt
・c:\test\2.txt
・c:\test\1.ka\1.txt
・c:\test\1.ka\2.txt
上記Pathの4ファイルをmakecabコマンドによって圧縮して、出来上がったCABファイルを開いたエクスプローラの画面表示が以下です。「パス」という列に元の階層構造の情報が残っていますが、上の画面内から4つのファイルをドラッグ&ドロップしてフォルダに展開すると、階層構造が失われて、以下のようなPathのファイルが出来上がります。
・c:\展開\1.txt
・c:\展開\1 (1).txt
・c:\展開\2.txt
・c:\展開\2 (2).txt
expandコマンドを使うと、階層構造に従ってファイルが展開されます。
それでは、makecabで圧縮してexpandで展開すれば万事問題無いかと言えばそうではなく、以下の状況ではバグと思われる結果になります。
[コマンド使用前のファイル構成]
[コマンドの実行画面]
[コマンド実行後のファイル構成]
c:\text\expフォルダ内には1.txtが出来る筈ですが、1.tx_になってしまっています。
1.tx_をメモ帳で開くと、1.txtと同じ内容になっているので展開自体はできていますが、拡張子がおかしいです。
この件はMicrosoft TechNetにて既に報告されている(2016年7月15日 1:39)ようですが、まだ回答は無いようです。
拡張子だけの問題ならコマンドラインを利用するスクリプトで修正してやれば良いかとも思いましたが…エクスプローラで開いた時に階層構造に見えない(ZIPなら見える)という点も気になりますので、CAB形式は使わないことにします。
ちなみに、CABファイルを展開するコマンドとしてextractコマンドというものもあるそうですが、リンク先サイトに下記記載があるように、SDKを入れたPCでしか利用できないようです。
CabinetSDK中に含まれるEXTRACT.EXEというファイル
0 件のコメント:
コメントを投稿