web-dev-qa-db-ja.com

7 Zip - コマンドライン:ワイルドカードパターンでフォルダを抹消しますか?

コマンドラインの7Zipコマンドからワイルドカードパスを除外する方法はありますか。

私はこれを何かやっています:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

また、 "FolderToArchive"の下にある\bin\*.*または\obj\*.*フォルダを除外します。ファイルを除外するには、-xパラメータを使用できます。ヘルプファイルは-xを使用するためのこの例を与えます:

7z a -tzip archive.Zip *.txt -x!temp.*

ファイルを除外するのに最適です。しかし、ここでも、ワイルドカードで指定されたフォルダを除外したいと思います。私の "FolderToArchive"の下には複数のフォルダがあり、それらのフォルダの下にはbin\obj\フォルダがあるかもしれません。これらをアーカイブに含めないでください。

私はパターンを試してみました:

-x!bin\*-x!bin\*.*-x!\bin\*-x!\bin\*.*-x!\\bin\\*-x!\\bin\\*.*

誰も除外しないようです。これは単に7zipの制限ですか?

104
Yoopergeek

binおよびobjフォルダを再帰的に除外するには、次のコマンドを使用します。

7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj
122
heavyd

バグを避けるために、-rまたは-xrを慎重に使用してください。

次のようなディレクトリがあるとします。

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

そしてコマンドを実行します。

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

archive.7zで得たもの

.\path2\src
.\path5\src

つまり、.\path2\.\path5\がarchive.7zのトップフォルダになり、両方のbinディレクトリが除外されました。

-xアーカイブの最上位フォルダへのパス/ファイル名相対のみをサポートします。

そのため、.\path1\path2\binだけを除外し、他のすべての「bin」ディレクトリを含める場合は、コマンドは次のようになります。

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -x!path2\bin

-xで絶対パスを使おうとしましたが、成功しませんでした。


更新:

Linux用の7zには、絶対パスで動作するオプション-spfがあります。

Marco によると、-spfは7-Zip 15.14以降のWindowsでも利用可能です。

13
zhazha