コマンドラインの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の制限ですか?
binおよびobjフォルダを再帰的に除外するには、次のコマンドを使用します。
7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj
バグを避けるために、-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でも利用可能です。