命令行工具在Windows中以递归方式删除具有指定名称的文件夹?

时间:2009-02-06 17:52:18

标签: windows file utilities administration

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

例如

c:\
  proyect1
   _svn
   images
     _svn
     banner
       _svn
     buttons
       _svn

然后我运行类似

的东西
rm-recurse c:\proyect1 _svn

我应该得到:

c:\
  proyect1
   images
     banner
     buttons

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

- 感谢Grant,我一发布问题就看到SVN有关SVN导出命令的文档,但我也想删除Visual Studio创建的_vti_ *文件夹,所以我也会探索{{1}解决方案。

8 个答案:

答案 0 :(得分:129)

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

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

答案 1 :(得分:25)

学习一些PowerShell的时间; o)

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

第一部分递归查找每个_svn文件夹。 Force用于查找隐藏文件夹。 第二部分用于删除这些文件夹及其内容。 删除命令行开关附带一个方便的“whatif”参数,可以预览将要执行的操作。

PowerShell适用于Windows XP和Windows Vista。它默认存在于Windows 7和Windows Server 2008 R2上。

这是一个MS产品,它是免费的,它摇滚!

答案 2 :(得分:20)

对于BATCH文件中的包含/调用(比如删除Debug和Release文件夹):

for /d /r . %%d in (Debug Release) do @if exist "%%d" echo "%%d" && rd /s/q "%%d"
批处理文件中需要

double %才能用作转义字符。否则它会报告语法错误。

感谢。

答案 3 :(得分: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

答案 4 :(得分:10)

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

答案 5 :(得分: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,它将在任何操作系统下运行。

答案 6 :(得分:3)

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

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

答案 7 :(得分:2)

这里......使用FreeCommander或TotalCommander

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

socendani