2012-02-23 84 views
1

如何使用powershell和7zip(7za.exe)壓縮文件夾,同時排除某些文件類型?Powershell 7zip(7za)排除文件類型

我嘗試這樣做:

cd "C:\path\to\folder to zip" 
7za.exe a "C:\path\to\newZip.zip" -mx3 -x!*.txt -x!*.pdf 

但返回:

.txt: WARNING: The system cannot find the file specified. 

.pdf: WARNING: The system cannot find the file specified. 

,不ZIP任何東西 - 只是創建一個空的ZIP文件。

我也試過這樣:

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 

但在「C:\路徑\爲\文件夾壓縮」是拉鍊的一切文件夾而不是排除任何東西..

謝謝你的任何幫你提供。

-Jim

回答

0

你的第二次嘗試幾乎是正確的。

您的調用7-zip的命令需要被封裝在for-each塊中,否則$_.FullName被解析爲空字符串和7-zip(在沒有輸入參數的情況下)會自動將目錄中的所有內容。所以改成這樣:

Get-ChildItem "C:\path\to\folder to zip" -Recurse -Exclude *.txt, *.pdf | %{7za.exe a -mx3 "C:\path\to\newZip.zip" $_.FullName} 

注意%是的foreach對象的別名。

+0

謝謝,我會給這個嘗試:) – user1161625 2012-02-23 21:37:57

+0

這工作得很好!事實上,我甚至不需要cd到我現在要壓縮的目錄 - 這爲我節省了一行代碼:)謝謝 – user1161625 2012-02-23 21:42:38