命令以recursion方式删除Windows上的所有.svn目录

我有一个有许多子目录的目录。 在每个文件夹中都有一个颠覆文件夹(.svn)。

是否有一个命令在Windows将通过每个文件夹和子目录并删除.svn文件夹?

或者我将不得不创build一个脚本或手动吗?

使用svn export命令将Subversion工作副本导出到没有.svn目录的新“干净”目录结构中。

用下面的行建立一个litte批处理文件,并从其下有.svn目录的父文件夹执行。

 FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G" 

您也可以在命令提示符下直接输入下面的行:

 FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%G" 

在PowerShell中执行此操作。

注意:这是递归的,所以确保你在正确的目录!

 gci -fil '.svn' -r -force | ri -r -force 

这里是我的源代码树清理脚本的其余部分。

 gci -fil 'bin' -r -force | ri -r -force gci -fil 'obj' -r -force | ri -r -force gci -fil '_ReSharper*' -r -force | ri -r -force gci -fil '*.suo' -r -force | ri -r -force gci -fil '*.user' -r -force | ri -r -force 

如果要删除Windows中所有名为.svn的子文件夹,请使用以下内容创建批处理文件:

 for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do ( rd /s /q "%%i" ) 

将其保存在del_All_Dot_SVN_Folders.cmd文件中。 运行。 你完成了。

感谢http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/

请记住,上面的代码有.svn,而链接中的代码只有* svn,所以最好让.svn不会意外地产生不希望的效果。

只需在文件资源管理器的搜索框中键入.svn,然后选择并删除所有搜索结果(请参阅JB Nizet的评论)。 这个方法当然也可以用来快速删除obj和bin目录,例如组织svn档案的时候。

虽然OP要求提供命令行解决方案,但他也表示使用Windows,并考虑手动删除,所以File Explorer方法仍然可以考虑,尤其是因为它是最快的方法,并不依赖像“svn export”这样的“工具”。

尽管OP已经选择了一个被接受的答案,但是这个答案可能对其他人有用。 至少对于我来说,很长一段时间linux / windows用户更喜欢命令行,并且首先通过这篇文章了解了搜索框:-)

浏览器截图与搜索框

我知道它太晚回答这个,但我想有一个简单的方法,如果有日食和svn插件安装在你的月食。 右键点击项目,进入团队 – >断开连接。 它会打开一个弹出窗口,您可以在其中选择第一个选项:'同时从文件系统中删除SVN元信息。 这将自动删除所有的SVN文件夹与svn属性文件,有时你可能会忘记只删除.svn文件夹!

重要的一点是,如果要运行shell来删除.svn文件夹,则可能需要使用-depth参数来防止find命令进入刚删除的目录,并显示愚蠢的错误消息,如eg

 "find: ./.svn: No such file or directory" 

要摆脱这个错误,你可以使用find命令如下:

 cd [dir_to_delete_svn_folders] find . -depth -name .svn -exec rm -fr {} \;