• 締切済み
  • 困ってます

差分のLZHファイルの作り方

win2000のDOSコマンドから実行する方法を模索しています。 指定するディレクトリの中身全部を圧縮するとき、別の場所に作ってある「A.LZH」と比較して差分ファイルだけを「B.LZH」の名前で圧縮するという方法はありませんか? つまり、これから圧縮しようとするファイルに対し「A.LZH」の中に無い物だけを「B.LZH」として圧縮したいのです。 差分のバイナリファイルを作るフリーウェアが存在するようなのですが、どうしても差分のLZHを作りたいので。 通常はLHMeltを使っています。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数332
  • ありがとう数0

みんなの回答

  • 回答No.3
  • x1va
  • ベストアンサー率26% (802/3006)

#2です。追記。 何らかのバックアップソフトを利用して定期的にバックアップをしている場合、バックアップ済みのファイルは全てアーカイブ属性がOffになってしまうので、この手は使えません。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 回答No.2
  • x1va
  • ベストアンサー率26% (802/3006)

1.圧縮する際は各ファイルのアーカイブ属性がOnになっているものだけをdirコマンドを使いテキストファイルへリストアップする。 2.リストファイルを整形して、レスポンスファイルを作成する。(レスポンスファイルについてはunlha32.dll付属のcommand.txtを参照) 3.下記のlha32.exeを使って圧縮を開始。その際にレスポンスファイルをunlha32.dllへ渡す。 4.圧縮完了後attribコマンドを使い、全ファイルのアーカイブ属性を全てOffにする。 5.ファイルを新規追加(他のフォルダからのコピーを含む)、または変更が加わると自動的にOnになるので、次回はOffのものは対象外となる。 こうすればわざわざA.lzhと比較をする必要がなくなり、処理時間が短くなると思います。 コマンドラインからlzh形式で圧縮するなら、unlha32.dllと http://www.vector.co.jp/soft/win95/util/se028209.html を組み合わせると便利です。DOS版lha.exeと同じ感覚でunlha32.dllを利用できます。古いソフトですが、Windows2000でも使えます。

共感・感謝の気持ちを伝えよう!

質問者からの補足

定期的に行いたいので、その都度dirコマンドを使って出来るリストファイルを度整形するのは面倒ですね。

  • 回答No.1

1)A.LZHの内容をテンポラリファイルに書き出し 2)ディレクトリの内容をテンポラリファイルに書き出し 3)二つのテンポラリファイルのファイル名部分を抜き出す 4)ソートする 5)ファイル比較して差分をテンポラリファイルに書き出し 6)差分テンポラリファイルを整形してLHAのコマンド列として認識できる形にする 7)LHAをaオプションで起動して圧縮 LHAとDOS標準コマンドだけでもバッチファイルが組めそうです。grepがあれば便利でしょう。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • LZHファイルが解凍できません。

    特定のLZHファイル解凍できず困っています。 Lhacaで解凍しようとすると、LZHファイル名のフォルダが出来上がって中身が空になっています。(解凍中の進捗の帯グラフも表示されません。) そのLZHファイルは、 Lhaca 0.74で圧縮し、 2,751,105KBのものと 2,220,673KBのものです。 同環境で圧縮した 1,045,520KBのものと 1,004,619KBのものは、解凍できます。 メモリ容量など何か関係あるのでしょうか? 圧縮した環境は、メモリ768MB。 解凍している環境は、メモリ512MBです。 何か良い方法はありませんでしょうか。

  • バイナリファイルの比較

    バイナリファイルの比較をして差異があるかDOSコマンドで調べたいのですがどうすればよいでしょうか?ちなみにFCコマンドだとレングスチェックしかされないのでだめでした。

  • ViXで[ファイル]-[新規作成]-[書庫ファイル]で書庫(.LZH)

    ViXで[ファイル]-[新規作成]-[書庫ファイル]で書庫(.LZH)ファイルを作る際、選択したファイルだけを圧縮してほしいのに、フォルダの中身をすべて圧縮してしまいます。 ViXで選択したファイルだけを圧縮する方法を教えてください。

  • 差分ファイルだけ別フォルダに保存したい

    ファイルのバックアップをWindowsのコマンドを使って行いたいと思っています。元フォルダAとミラー先フォルダBの差分ファイルだけをディレクトリを作りながらフォルダCの下にコピーをしたいのですが、xcopyやrobocopyでこのような処理ができるようにコードを教えてください。 よろしくお願いします。

  • lzhからファイルの削除

    お世話になります。 直接は関係ないかも知れませんが、 winfdなるファイル操作aplを使っています。 winfdは圧縮・解凍にunlha32を使っています。 lzhの中のファイルを削除したいのですが、 良い方法はありますでしょうか。 現在は、 一度全てを解凍し、該当ファイルを削除した後、再圧縮しています。 宜しくお願いします。

  • lzhで圧縮後の変更について。

    lzh、もしくはzipで圧縮後、中身を閲覧して特定のファイルだけ入れ替えできるようなフリーフェアはありますでしょうか。再度圧縮すれば済む話ではありますが、圧縮後も結構容量があり特定のファイルだけ入れ替えできれば、時間の短縮ができるので助かります。 何卒宜しくお願い致します。

  • LZH形式ファイルを開きたい

    LZH形式の圧縮ファイルを開きたいのですが、方法がわかりません。 マイクロソフト圧縮(LZH形式)フォルダをダウンロードすればできるようなのですが、正規のマイクロソフトソフトウェアのページにはゲームか何かの特典しか表示されません。 マイクロソフトのサイト内も探してみたのですが、どこからダウンロードできるのでしょうか?または他に開く手段はありますか? Windows XP SP3、32ビット版です。 よろしくお願いします。

  • ASPでLZHファイルダウンロード

    ASP初心者です。 ASPにて、 サーバ上に存在するLZH形式の圧縮ファイルの ダウンロード方法を教えて下さい。 DLLで作成したLZHファイルの取得を 構築しております。

  • LZHが開かない!

    下記のファイルを入手しましたが、Media player等で開く(聞く)事が出来ません。  XXXXXX.LZH.mp3 [+Lhca]解凍・圧縮プログラムを試しましたが、圧縮されるだけなので圧縮されている様子はありません。 何方か解決方法をお教えください。 PS ZIPの拡張子のファイルも同様なのですが・・・・。

  • 拡張子を指定して、ファイルの差分を取る方法

    WindowsXPです。 フォルダを比較して、ファイル(テキストファイル)の差分をとる方法をお教えください。 ここで重要な条件は、比較する拡張子を指定できなければなりません。 例えば、拡張子が、txtのファイルのみとか、txtとcfのみなど。 サブディレクトリの中のファイルも比較できなければなりません。 どうも、このような場合には、diffというものを使うらしいのですが、 コマンドプロンプトでdiffと打っても 「'diff' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 というだけで、使えないようです。