78

我想删除每个文件夹和子文件夹中的每个“_svn”...

例如

C:\
  项目1
   _svn
   图片
     _svn
     横幅
       _svn
     纽扣
       _svn

然后我运行类似的东西

rm-recurse c:\proyect1 _svn

我应该得到:

C:\
  项目1
   图片
     横幅
     纽扣

理想的东西是一个小的独立 EXE 或类似的东西。

-- 谢谢格兰特,我一发布问题,就看到了关于 SVN 导出命令的SVN文档,但我也想删除 Visual Studio 创建的 _vti_* 文件夹,所以我也会探索for解决方案。

4

8 回答 8

144

类似于 BlackTigerX 的“for”,我打算建议

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

于 2009-02-06T18:05:03.333 回答
37

是时候学习一些PowerShell了;o)

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

第一部分递归地找到每个 _svn 文件夹。强制用于查找隐藏文件夹。第二部分用于删除这些文件夹及其内容。Remove commandlet 带有一个方便的“whatif”参数,允许预览将要执行的操作。

PowerShell 可用于 Windows XP 和 Windows Vista。默认情况下,它存在于 Windows 7 和 Windows Server 2008 R2 上。

这是一款 MS 产品,它是免费的,而且非常棒!

于 2009-11-13T07:23:34.043 回答
25

对于从 BATCH 文件中包含/调用,请使用(例如删除 Debug 和 Release 文件夹):

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

批处理文件中需要double%才能用作转义字符。否则它会报告语法错误。

谢谢。

于 2011-07-29T05:44:09.963 回答
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

于 2009-02-06T17:55:04.180 回答
10

在 Windows 中?如果您使用的是 tortoiseSVN,您可以使用 export 命令导出项目的副本,而不需要 .svn/_svn 文件夹。

于 2009-02-06T17:55:39.220 回答
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))

我想你可以试试这个 Python 脚本,如果你安装了 Python,它可以在任何操作系统下运行。

于 2009-11-13T06:53:58.863 回答
3

在这里... 使用 FreeCommander 或 TotalCommander

http://www.broobles.com/blog/posts/36

索森达尼

于 2009-03-13T16:23:27.713 回答
3

SVN 论坛的另一个选项:将 XCopy 与包含要排除的文件/目录列表的文件一起使用(在这种情况下为 .svn 或 _svn)

XCopy C:\VersionedFolder C:\UnVersionedFolder /EXCLUDE:C:\No.SVN.txt /E /C /I /F /R /Y
于 2011-10-25T20:21:18.040 回答