用于递归删除Windows上的所有.svn目录的命令

时间:2011-02-03 17:43:44

标签: windows svn command-line

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

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

或者我必须手动创建脚本吗?

8 个答案:

答案 0 :(得分:167)

使用以下行创建一个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"

答案 1 :(得分:46)

在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

答案 2 :(得分:29)

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

答案 3 :(得分:10)

如果要删除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不会意外地产生不良影响。

答案 4 :(得分:9)

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

虽然OP要求使用命令行解决方案,但他也指出使用Windows,并考虑手动删除,因此仍然可以考虑文件资源管理器方法,特别是因为它是最快的方法而且不依赖于像svn这样的“工具”出口。

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

explorer screenshot with searchbox

答案 5 :(得分:1)

很抱歉参加聚会晚了,但这是一行人中的另一个人:

for /r %i in (.svn) do rmdir /s /q "%i"

答案 6 :(得分:0)

我知道回答这个问题为时已晚,但我想有一个简单的方法,如果你的eclipse上安装了eclipse和svn插件。右键单击项目,转到Team->断开连接。它将打开一个弹出窗口,您可以在其中选择第一个选项:'同时从文件系统中删除SVN元信息。'这将自动删除所有SVN文件夹以及有时在删除.svn文件夹时可能会忘记的svn属性文件!

答案 7 :(得分:-1)

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

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

要消除此错误,可以使用find命令,如下所示:

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