私は以下のフォルダ構造を持っています:
- ルート
- folder1
- folder2
- folder3
- 7za.exe
7-Zipコマンドラインツールを実行して、folder1
内のすべてのファイルをfolder1.Zip
というZipファイルに圧縮します。
以下を実行する
7za.exe a -tzip folder1.Zip folder1\\*.*
期待どおりZipファイルを生成します。しかし、Zipファイルを開くと、その中にfolder1
という名前のフォルダーがあり、その中にそのフォルダーの中にあるすべてのファイルがあります。 Zipフォルダにフォルダ名を追加したくありません。つまり、すべてのファイルを "Flat"ファイル形式で追加したいのです。
私はまた、個々のファイル/フォルダごとにコマンドラインツールを再帰的に実行したくありません。
この機能を提供するスイッチはありますか?
7-Zipヘルプ ファイルから:
(追加)コマンド
アーカイブにファイルを追加します。
例
7z a archive1.Zip subdir\
フォルダーsubdirからアーカイブarchive1.Zipにすべてのファイルとサブフォルダーを追加します。アーカイブ内のファイル名にはsubdir \プレフィックスが含まれます。
7z a archive2.Zip .\subdir\*
フォルダーsubdirからアーカイブarchive2.Zipにすべてのファイルとサブフォルダーを追加します。アーカイブ内のファイル名にはsubdir\prefixは含まれません。
cd /D c:\dir1\
7z a c:\archive3.Zip dir2\dir3\
アーカイブc:\ archive3.Zipのファイル名にはdir2\dir3\prefixが含まれますが、c:\ dir1\prefixは含まれません。
だからあなたが望むコマンドは次のようになります。7za.exe a folder1.Zip .\folder1\*
また、7-Zipのワイルドカードの取り扱いにも注意してください。 *.*
を「すべてのファイル」として扱うのではなく、「ファイル名にピリオドを含むすべてのファイル」という意味です。拡張子のないファイルは見逃されるでしょう。本当にすべてのファイルが必要な場合は、代わりに*
を使用してください。
最後に、アーカイブファイル名が-tzip
で終わっている場合、.Zip
パラメータは必要ありません。 7-Zipは、そのような場合に必要なフォーマットを判断するのに十分スマートです。カスタム拡張機能が必要な場合にのみ必要です(例:Mozillaアドオンの場合は7za.exe a -tzip foo.xpi <files>
)。
これは私のために働きました
C:\ Parent\SubFoldersのようなフォルダ構造を考えてみてください。そして、C:\ Parentという親フォルダなしのすべてのファイルとフォルダを含むparent.Zipを作成します[つまり、SubFoldersから始まります.....]。
cd /D "C:\Parent"
"7z.exe" a Parent.Zip "*.*" -r
これは、C:\ ParentにParent.Zipを作成します。
受け入れられた答えを拡大するために(私はそこにコメントを追加することができませんでした):
Linuxでは '*'を追加してもうまくいきませんでしたので、より冗長なコマンドラインを作成しました。
curr_dir=$(pwd); \
cd source_code/lambda/ ; \
7z a ../../lambda.Zip .; \
cd $curr_dir \
unset curr_dir
===========
スクリプトの説明
私はそれが誰かに役立つかもしれないと思います。