開発リソース

概要

Lhaplusをコマンドラインで動かせるかと思って試してみたら、意外と使えることが判明した。

詳細

パスワード付きzipファイルの生成を自動化したくて、Lhaplusのコマンドライン引数について調べてみた。

ここのページになんぼか情報があったが、コメントで否定されていた。

個人的に追求してみたところ、うまいこと使えたのでまとめ。(バージョンは1.57)

lplsshlx.dllをバイナリエディタで探って、もう少しオプションを発見した。

重要な注意として、圧縮対象のファイル名はパスがついていないと処理できない。
.\をつけて相対パスにするなり、絶対パスで記述するなりのステップが必要。

また、圧縮先のファイルが既に存在する場合は上書き確認のポップアップが表示される。
これを無視するオプションはないようだ。

何もオプションを指定せずにアーカイブファイルを引数に渡すと、lhaplus設定で指定済みのフォルダに対して展開しようとする。

なおバイナリエディタでのぞいた結果は以下の通り。
非公開の機能を勝手に解析しただけなので、今後のバージョンアップで変更されたり使えなくなったりする可能性もある点、ご了承ください。

0x53420あたりから(この辺はdllの引き写し):

  • /c:拡張子 指定の拡張子で圧縮(省略時の挙動がよくわからず)
  • /oh ここに解凍(アーカイブのあるフォルダに展開する)
  • /od デスクトップに解凍
  • /oc 出力先を指定して解凍
  • /p /c:zipのときにパスワード付きを指定(パスワードはプロンプトから入力)
  • /p:xxx パスワード付きzip圧縮でパスワードを指定する(プロンプトは省略)
  • /t テンポラリモードで解凍(ダイアログが出てくる よくわからず)
  • /x 自己解凍形式で圧縮

0x054c40

  • /l:xxx 指定のファイルで記述されたファイル一覧を操作対象にする。圧縮解凍両方に対応
    • テキストファイルに1行1ファイルで一覧を書いていけばいい模様。
  • /d lオプションで指定したリストファイルを、処理終了後に削除する(たぶん)
    • ファイルが多すぎるとコマンドラインがあふれて処理しきれないので、一時ファイル経由で処理させる意図か

0x055170

  • /h 不明
    • 単体で使っても何も起きない
  • /o:xxx 出力先フォルダを指定する。圧縮解凍両方に対応
  • /h, /dがここにも出現する
    もしかすると展開した後アーカイブファイルを削除する、という処理ができるんだろうか?

0x056380

  • /inst シェル初期設定画面を表示する

ついでにlhaplus.exeの調査結果

000e:caf0

  • /a2a: 不明 文字コード変換関連か
  • /log:xxxx 指定のログファイルにログを出力する

000e:d180

  • /n:xxxx 出力するファイル名を指定する

000f:b030

  • /init 不明
  • /instsilent 初期化を対話なしに行う?

実用的な例:

カレントディレクトリのreadme.txtをc:\tempにzipで圧縮 パスワードabcを設定
Lhaplus.exe /c:zip /o:c:\temp /p:abc .\readme.txt
カレントディレクトリのreadme.zipをc:\tempに展開
Lhaplus.exe /o:c:\temp .\readme.zip

複数ファイルを渡す場合はそのままスペース区切りで後ろに続ければよい。アーカイブのファイル名は最初のファイルの名前部が使われる。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-05-02 (金) 01:43:43 (1366d)