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

use*_*041 73 svn windows command-line

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

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

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

Aji*_*aze 169

使用以下行创建一个litte批处理文件,并从具有.svn目录的父文件夹中执行它.

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

您还可以从命令提示符直接发出以下行:

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

  • 这个答案应该是"最佳答案" (4认同)

Bob*_*non 46

在PowerShell中执行此操作.

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

gci -fil '.svn' -r -force | ri -r -force
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)


Gre*_*ill 29

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

  • 这不符合实际问题.例如,我收到了一个文件夹树,但不使用SVN.所以"导出"命令不适用于我. (8认同)
  • 这可能不是他想要的.我想要相同的东西,所以我可以将一些已修改的代码签入另一个SVN位置. (5认同)
  • 如果您有权访问原始存储库,'svn export'运行良好.有时我会收到包含.svn目录的代码转储,这些目录指向我无法访问的存储库.在这种情况下,批处理文件或powershell答案之一是可行的方法. (4认同)
  • 该命令不会从磁盘中获取现有文件,而是从存储库中当前最新版本创建副本.你应该使用`svn export WCPath NewPath` (3认同)

vis*_*uqi 10

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

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

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

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

请记住,上面的代码有.svn,而链接中的代码只有*svn,所以最好让.svn不会意外地产生不良影响.


Rol*_*and 9

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

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

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

探索者用searchbox截图