コマンドラインの 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\\*.*
どれも bin\
フォルダを除外しているようには見えない。これは単に 7zip の制限なのでしょうか?
126 Yoopergeek 2010-01-18
binとobjフォルダを再帰的に除外するには、コマンドを使用します
7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj
158 heavyd 2010-01-18
バグを避けるためには -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で絶対パスを使おうとしましたが、成功しませんでした
Update:
7z for Linux には絶対パスで動作する -spf
というオプションがあります
Marcoによると、-spf
はWindowsでも7-zip 15.14から利用できるとのこと
18 zhazha 2014-03-01
@zhazhaさんの回答に基づいて、サブフォルダを正確に除外する方法について、より明確にします。Windows 10では、Visual Studioソリューションのルートフォルダをバックアップするために
D:\VS2019\Sln1
then:
//goto the parent of the root folder first which make thing clearer
//not sure what will happen if you go into the root folder
cd D:\VS2019
"<path-of-7z>\7z.exe" a -tzip -mx0 Sln1_backup.zip Sln1 -x!Sln1\.vs -x!Sln1\Debug -x!Sln1\Release -x!Sln1\lib -x!Sln1\Project1\x64 -x!Sln1\Project2\obj
そうすれば、指定したサブフォルダだけが除外されることを確認できます。隠された巨大な.vsフォルダのために働く
-mx0はアーカイブ/圧縮なしを意味します
1 jw_ 2020-02-20