web-dev-qa-db-ja.com

7-Zipコマンドライン

テキストファイルにリストされているすべてのファイルを圧縮するバックアップユーティリティを作成しています。 MS Accessをフロントエンドとして使用しており、圧縮には7-Zipを使用しています。これらは私が使用しているコマンドです:

7zG.exe a c:\Backup\backup.Zip
@c:\temp\tmpFileList.txt

すべてのファイルはパスなしで圧縮されています。各ファイルのパスをZipファイルに含める方法はありますか?その後、backup.Zipが抽出されると、ファイルは元のフォルダー構造に復元されます。

ありがとう

10
Arnold

この7-Zipフォーラムスレッド では、多くの人々がこの機能への要望を表明していますが、7-Zipの開発者Igorは FAQ質問 を指しています。アーカイブ内のファイルのパス?」同様の結果を達成するため。

要するに:

  • ボリュームごとにファイルを分けます(C:\上のファイルのリスト、D:\のリストなど)
  • 次に、各ボリュームのファイルのリストについて、
    1. 適切なボリュームのルートディレクトリへのchdir(例:cd /d C:\
    2. ボリュームのルートディレクトリへのパスrelativeを含むファイルリストを作成します(たとえば、C:\Foo\BarFoo\Barになります)。
    3. この新しいファイルリストで以前と同じように7z a archive.7z @filelistを実行します
    4. フルパスで抽出する場合は、まず適切なボリュームのルートディレクトリにchdirしてください
6
Anonymous

7-Zipのコマンドラインプログラムは7zまたは7zaです。利用可能なオプションについて 役立つ記事 を以下に示します。 -r(再帰)オプションはパスを格納します。

4
Vinay Sajip

私はこれについては調べませんでしたが、腰から撮影したので、ポータブルでコマンドラインのサポートを落としました。ポータブルアプリケーションで多くのコマンドライン処理を行わない理由は、OS(ここではWindows)で実行可能ファイルを%path%包含リストに追加する必要があるためです。

コマンドラインユーティリティを使用してその要件が満たされない場合は、かなり面倒です。

7z -a

だろう

d:\ portable\z7\z7 -a c:\ to\archive\folder *。*

すべてを入力するのは、ポータブルアプリのようなものでGUIが意味をなす理由です(アプリ)は、それ自体の場所を記憶し、そのものを処理し、実行できない場合は、接続されていないことがわかります。

ポータブルアプリに本当にそれを含めたい場合は、常にフルバージョンをインストールして必要な7z.exeを引き出し、ポータブルフォルダーに入れて、必要なDLLが含まれていることを確認してください。

シェルが接続されていることを確認した後、シェルを押すときにパスを設定する必要があります。

http://www.redfernplace.com/software-projects/patheditor/ -パス情報が大量にある場合に役立つパスエディター(ダウン)は、20以上のパス情報が読みにくい場合に役立ちます。

http://www.softpedia.com/get/System/System-Miscellaneous/Path-Editor.shtml -パスエディターの代替ネットソース

一時的な「ポータブル」ドライブのシステムパスを手動で変更することはお勧めできません。

set path =%path%; "d:\ portable\z7 \";

dos cmd.exeまたは http://sourceforge.net/p/conemu/home/Home/ を実行すると

他の回答は、他の問題をより適切に解決するために、私が試そうとはしていません。

http://www.codejacked.com/Zip-up-files-from-the-command-line/ -z7およびz7aのコマンドラインの使用に関する優れたリファレンス。

PS:ネクロには申し訳ありませんが、(たとえそれが単なる推測にすぎないとしても)理由に対するより直接的な答えが必要だと考えました。

1
ransom bot

これを試してみてください。それは私のために働いた。 7z.exe a d:\ newFileName.7z "d:\ ExistingFile.txt"

cmdを開き、7Zipアプリをインストールしている場合は、これを試してください。コマンドプロンプトでは、c:\ programs and files\7Zip\7z.exe a d:\ newFileName.7z "d:\ ExistingFile.txt"のようになります。

1
Mahadev Mane

7-Zipバージョン9.25 alpha以降、新しい-spfアーカイブへのドライブ文字を含む完全なファイルパスを格納するために使用できるスイッチ。

7zG.exe a -spf c:\BAckup\backup.Zip @c:\temp\tmpFileList.txt

これで問題なく動作するはずです。

0
mrt

7-Zipはリストファイルに相対パスを要求します。そうでない場合、ファイル名のみが保存され、重複ファイル名エラーが発生します。

リストに絶対パス名が含まれていると仮定します。

  • リストファイルを編集して、ドライブプレフィックスC:\を削除します。
  • 7Zを実行して上記のリストファイルを使用するときは、ドライブのルートにいることを確認してください。
  • 次に、パスを保存し、重複した名前について不平を言うことはありません。リストファイルに相対パスが必要です。

リストファイルに別のフォルダーへの相対パスがある場合、そのフォルダーから7Zを実行している必要があります。

更新:上記の別の投稿から、新しい7-Zipには上記の手順を必要としない-spfオプションがあることがわかりました。まだテストされていませんが、私の手順はこのオプションのない以前のバージョン用です。

0
user173399