我有一个包含许多子目录的目录。在每个文件夹中都有一个subversion文件夹(.svn)。
Windows中是否有命令会通过每个文件夹和子目录并删除.svn文件夹?
或者我必须手动创建脚本吗?
答案 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用户更喜欢命令行并且首先通过这篇文章了解搜索框: - )
答案 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 {} \;