43

ファイルを圧縮するために 7z コマンド ライン実行可能ファイルを使用していますが、アーカイブにファイルを追加している間、ファイルのパスがアーカイブに保存されていることがわかります。

だから私がするなら

7z a -tzip  myzip.zip dir1\dir2\*

アーカイブ myzip.zip にはパス dir1\dir2 が含まれます。私はこれを望まず、パスを保持せずにファイルのみを zip ファイルに追加したいと考えています。かなり検索しましたが、これを行う方法が見つからないようです。明らかな何かが欠けている可能性がありますか?

ありがとう

4

5 に答える 5

88

パスの前にドットを追加するだけです。 7z a -tzip -r myzip.zip .\Relative\Dir\*

于 2012-10-24T14:20:42.070 に答える
32

フルパスを指定します。それはうまくいくはずです。現在の場所からの相対パスではありません。たとえば、man5 フォルダー内のファイルをアーカイブする場所を以下に示します。

$ 7z a -tzip myzip.zip /home/pradeeban/Desktop/man4/man5/*

zip にはファイルのみが含まれ、ディレクトリは含まれていません。

次に、相対パスのみを指定しました。zip内にディレクトリがありました。

$ 7z a -tzip myzip.zip Desktop/man4/man5/*

Linux(Ubuntu 12.04)で試しました。それがWindowsと異なるかどうかはわかりません。

于 2012-05-25T12:45:33.207 に答える
14

相対パスを使用してこれを行う方法を発見しました。

7z a -tzip  myzip.zip %CD%\dir1\dir2\*

%CD%は、Windowsバッチファイルで現在のパスを取得する方法ですが、コマンドラインからも機能します。バッチファイルからの現在のディレクトリのキャプチャに関する詳細情報。

于 2012-09-17T20:58:50.237 に答える
3

7-zip ユーザー FAQ の関連する質問で説明されているように、7z は作業ディレクトリへの相対パスを保存するため、最初cdにアーカイブ用の目的の最上位ディレクトリに移動し、ここから 7-zip を実行する必要があります。

cd dir1\dir2\
7z a -tzip  myzip.zip *

スクリプトから実行し、変更されたディレクトリに影響を与えたくない場合は、選択したシェルで利用可能なディレクトリのプッシュ/ポップ機能を使用するか、生成されたプロセスで cd+7-zip を実行して、変更されたディレクトリでスクリプト全体に影響を与えないようにします。たとえば、Windows のスタートを使用すると、次のようになります。

start /D dir1\dir2\ /wait 7z a -tzip  myzip.zip *
于 2012-05-25T11:44:08.403 に答える
1

これは私のために働いた

C:\Parent\SubFolders..... のようなフォルダ構造を検討し、すべてのファイルとフォルダを含む parent.zip を作成します C:\Parent 親フォルダなし [つまり、SubFolders から開始します.....]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

これにより、C:\Parent に Parent.zip が作成されます。

于 2016-06-07T18:13:25.197 に答える