7 zip – 7Zip – コマンドライン : ワイルドカードパターンでフォルダを除外しますか?

7-zip command-line

コマンドラインの 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


タイトルとURLをコピーしました