2010年03月09日

プログラムから圧縮ファイル(LZH,ZIP)を解凍する一番手軽な方法

自前で解凍ルーチンを作るのは大変である。dllを使うのも結構面倒である。
そこでフリーソフトを使って簡単に行う方法を紹介する。

ソフトは「Lhasa」。ドラッグアンドドロップで簡単に解凍できる有名なソフトだが、実はコマンドラインでも使える。LHASA.TXTにパラメータの説明が載っているので試したところ見事に指定したフォルダに解凍させることができた。

コマンドラインサンプル:
1. C:\work\hoge.lzhを指定したフォルダ(例:C:\test)に解凍する場合
lhasa.exe -dC:\test -a- -e- -q -f C:\work\hoge.lzh
※パスに空白が含まれる時は"で囲む
lhasa.exe -d"C:\My Documents\hoge" ....

2. C:\work\hoge.lzh を同じ場所に解凍する場合
lhasa.exe -d- -a- -e- -q -f C:\work\hoge.lzh

パラメータの意味
-d(指定フォルダ) : 指定したディレクトリに出力
-d- : アーカイブと同じディレクトリに解凍
-a- : 出力先にそのままファイルを出力
-e- : 解凍先フォルダを開かない
-q : 途中経過表示をしない
-f : 解凍先に更新されたファイルがあっても確認せず上書き

これを元にVB2005で作ってみると

'/// LZH,ZIPファイルを指定したフォルダに解凍 /////
Public Sub Decompression(ByVal srcFile As String, ByVal desFolder As String)
'srcFile : 圧縮ファイル名
'desFolder : 解凍先フォルダ
'---------------------------
Dim para As String = "-d" & Chr(34) & desFolder & Chr(34) & " -a- -e- -q -f "
Dim exeFile As String = "C:\lhasa\lhasa.exe"
Dim proc As New Process
proc.StartInfo.FileName = exeFile
proc.StartInfo.Arguments = para & Chr(34) & srcFile & Chr(34)
proc.Start()
proc.WaitForExit()
End Sub




posted by なっちゃん at 16:23| 静岡 ☔| Comment(1) | TrackBack(0) | ETC | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。