2009-08-26 169 views
3

我有一個PowerShell腳本,用於創建從幾個位置複製編譯文件的發行版,並將它們與winrar一起壓縮。在腳本中,我轉到包含我想運行的文件夾目錄,然後執行此:用WinRar排除.svn目錄

Invoke-Expression ($WinRAR + " a " + $zipPath + " " + $WinRARFilter + " " + $DistName + "-zip " + $WinRAROpts) 

這實際上執行這樣的:

E:\Progs\WinRar\WinRar.exe a C:\Users\Echilon\Documents\Coding\ResourceBlender-Express\trunk\dist\resourceblender-express_1.44-zip.zip -x*\.svn\* -x*\.svn -x\.svn resourceblender-express-zip -r -s -m5 -inul 
但是沒有.svn目錄的

被排除在zip文件。這曾經工作,我不知道爲什麼它現在不,但我不能得到它排除正確的文件。

完整的劇本是在CodePlex上在http://resourceblender.codeplex.com/sourcecontrol/changeset/view/27742?projectName=resourceblender#456701(在腳本的底部)

可能有人在PowerShell中的一些經驗提供一些線索這光嗎?

+0

這是更多的winrar命令行問題,而不是powershell。 – RaYell

回答

11

這樣做的正確方法是執行SVN導出將沒有.svn目錄(和其他任何未版本控制)創建項目的副本,然後做拉鍊。

+0

我知道,但我現在不想編寫附加腳本來導出副本。替代方案只是Remomve-Item -Recurse,如果可能,我想避免這種情況。 – Echilon

+0

這是一個很好的回答不同的問題 – Victor

1

我同意Neil Butterworth在這種情況下更適合使用svn export命令的評論。 談到WinRar你可能會考慮使用-e開關來跳過隱藏文件夾(.svn是一個隱藏文件夾)和一個-ep開關來排除它的名稱。

請參考WinRar manual瞭解更多信息

+0

我知道這應該工作,但添加-eh到交換機沒有任何影響。這真的讓我感到困惑,.svn文件夾肯定是隱藏的。 – Echilon

1

我有同樣的問題,找到了這個網頁無解,所以其他人使用Google它是正確的交換是:

-x*\.svn\* 
+1

這實際上是其中的一種組合,它不適合我。 – Echilon

-1

我最終使用

-x*\.svn* 

這會忽略實際的.svn文件夾,而不僅僅是它裏面的一切。我也使用WinRAR 3.80。你有沒有嘗試更新你的WinRAR的版本?

想到了svn導出方法摸索出了很多更好地爲我,因爲我沒有得到所有的調試版本和雜項的.DLL

12

我有同樣的問題,解決了使用:

-x*.svn\ 

我使用Windows的WinRar v3.93。請注意最後的反斜槓。

+1

最終*反斜槓*由問題解決。謝謝 – BeardinaSuit

1

這是一個PowerShell問題。我將相同的命令放在命令提示符和BOOM中!

winrar a -ehs -x*\.svn\* -u -r -afrar -m3 "dest file.rar" "source folder"