2009-02-06 147 views
62

我想刪除的每個文件夾和子在每一個 「_svn」 ......命令行工具在Windows中遞歸地刪除具有指定名稱的文件夾?

例如

 
c:\ 
    proyect1 
    _svn 
    images 
    _svn 
    banner 
     _svn 
    buttons 
     _svn 

然後我運行像

rm-recurse c:\proyect1 _svn 

我應該得到:

 
c:\ 
    proyect1 
    images 
    banner 
    buttons 

理想的事情將是一個小的獨立EXE或類似的東西那個。

- 感謝格蘭特,只要我貼我看到SVN文件有關SVN導出命令的問題,但我也想刪除_vti_ *文件夾的東西Visual Studio創建的,所以我也將探討for解。

+0

請在問題的形式重述這一點;你是在尋求幫助來開發一個工具來做到這一點,或者你想知道是否有這樣的工具可用? – Rob 2009-02-06 17:53:47

+0

只需創建一個.bat文件。 :-) – MarlonRibunal 2009-02-06 17:54:57

+14

.bat文件不能解決所有Windows問題。有時你必須先填充命令和內容。 – Grant 2009-02-06 17:57:25

回答

116

到BlackTigerX的 「爲」 類似,我要建議

for /d /r . %d in (_svn) do @if exist "%d" rd /s/q "%d"

14
for /f "usebackq" %d in (`"dir _svn /ad/b/s"`) do rd /s/q "%d" 

http://ebersys.blogspot.com/2008/07/recursively-delete-svn-folders-easy-way.html

+0

我得到一個錯誤:無法找到dir文件,我嘗試了cmd.exe/c dir ...,但是我得到了同樣的錯誤,但是,JMD的解決方案解決了這個問題... – opensas 2009-02-06 20:28:17

+0

糟糕,我檢查了頁面你鏈接到,似乎在那裏幾個''(單引號)失蹤...修復,也做了詭計...... – opensas 2009-02-06 20:32:41

10

在Windows?如果您正在使用tortoiseSVN,則可以使用導出命令導出項目的副本,而不需要.svn/_svn文件夾。

+1

你也可以使用命令行工具進行svn導出,不管你是否在Windows上。 – Parappa 2009-02-06 18:11:41

+0

我認爲人們最終需要遞歸刪除.svn/_svn文件夾的原因是因爲他們直接將其本地工作副本複製到新位置,以便將其修改版本與乾淨導出進行文件夾比較,即在修改後的本地工作副本發生錯誤之後。 (至少這就是爲什麼我需要它,當可能的時候使用'svn export'肯定更容易/更快。) – JMD 2012-03-29 17:44:46

4
import os 
import shutil 

curdir = os.path.abspath(os.path.dirname(__file__)) 

def removedir(dirname, name = ".svn"): 
    if os.path.isdir(dirname): 
     for file in os.listdir(dirname): 
      if os.path.isdir(os.path.join(dirname, file)) and file == name: 
       thedir = os.path.join(dirname, name) 
       shutil.rmtree(thedir) 
       print ".", 
      else: 
       removedir(os.path.join(dirname, file)) 

我想你c試試這個Python腳本,如果你安裝了Python,它將在任何操作系統下工作。

21

時間學習一些PowerShell; O)

Get-ChildItem -path c:\projet -Include '_svn' -Recurse -force | Remove-Item -force -Recurse 

第一部分找到的每個文件夾_svn遞歸。強制用於查找隱藏的文件夾。 第二部分用於刪除這些文件夾及其內容。 刪除commandlet帶有一個方便的「whatif」參數,它允許預覽將要完成的操作。

PowerShell適用於Windows XP和Windows Vista。它默認存在於Windows 7和Windows Server 2008 R2上。

這是一個MS產品,它是免費的,它很有用!

16

列入/調用批處理文件內使用(比如去除調試和發佈文件夾):

for /d /r . %%d in (Debug Release) do @if exist "%%d" echo "%%d" && rd /s/q "%%d" 

%需要一個批處理文件中爲轉義字符的工作。否則它會報告語法錯誤。

謝謝。

3

SVN Forum另一種選擇:使用的XCopy與包含的文件/目錄列表中的文件被排除在外(.svn文件或_svn在這種情況下)

XCopy C:\VersionedFolder C:\UnVersionedFolder /EXCLUDE:C:\No.SVN.txt /E /C /I /F /R /Y 
相關問題