How can I use powershell and 7zip ( 7za.exe ) to ZIP a folder while excluding certain file types?
I tried this:
cd "C:\path\to\folder to zip"
7za.exe a "C:\path\to\newZip.zip" -mx3 -x!*.txt -x!*.pdf
But that returns:
.txt: WARNING: The system cannot find the file specified.
.pdf: WARNING: The system cannot find the file specified.
and doesn’t ZIP anything- just creates an empty ZIP file.
I have also tried this:
cd "C:\path\to\folder to zip"
Get-ChildItem "C:\path\to\folder to zip" -Recurse -Exclude *.txt, *.pdf | 7za.exe a -mx3 "C:\path\to\newZip.zip" $_.FullName
But that ZIPs everything in the “C:\path\to\folder to zip” folder instead of excluding anything..
Thank you for any help you can provide.
-Jim
Your second attempt is almost correct.
Your command to call 7-zip need to be wrapped in a for-each block, otherwise the
$_.FullNameis resolved to an empty string and 7-zip (in the absence of the input parameters) automatically zips everything in the directory. So change it to this:Note that
%is an alias to foreach-object.