2012-01-19(Thu)

unzip32.dllで書庫フォルダ内のファイルを解凍するメモ

書庫内にフォルダがあり、そのフォルダ内の指定ファイルを解凍しようとしてハマったのでメモ。

例えば C:\hoge.zip/aaa/bbb.txt を D:\dst\bbb.txt へ解凍するならコマンドは次の感じかと。
-x -j "C:\hoge.zip/aaa/bbb.txt" "D:\dst\" "aaa/bbb.txt"

そして hoge.zip に /aaa/bbb.txt だけが含まれている場合
hoge.zip
└aaa
  └bbb.txt
はこれで解凍できた。

しかし、2つ以上のファイルが含まれている場合
hoge.zip
└aaa
  ├bbb.txt
  └ccc.txt
はどちらもERROR_FILE_OPEN(0x800D)が返って解凍できない。

どうやらコマンド最後の "aaa/bbb.txt" が決め打ちだと上手くいかない。
UnArcFindNext で書庫内を一巡しながら "aaa/bbb.txt" を探し、INDIVIDUALINFO構造体の szFileName に取得したバッファ(結局 "aaa/bbb.txt" なんだけど・・) をコマンドに使用すると上手くいく。

もっとちゃんとしたやり方があるのかもしれん。

コメントの投稿

管理者にだけ表示を許可する

コメント

プロフィール

nakami

Author:nakami
可愛いテンプレートに似合う俺
うそAチームのスミス大佐

NAVI
カテゴリー
最近の記事
リンク
FC2カウンター
ブログ内検索
RSSフィード
sponsored link