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

ope*_*sas 70 windows administration utilities file

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

例如

c:\
  proyect1
   _svn
   images
     _svn
     banner
       _svn
     buttons
       _svn

然后我运行类似的东西

rm-recurse c:\proyect1 _svn
Run Code Online (Sandbox Code Playgroud)

我应该得到:

c:\
  proyect1
   images
     banner
     buttons

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

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

JMD*_*JMD 130

类似于BlackTigerX的"for",我打算建议

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

  • @DavidKEgghead,只需替换'.' (当前目录)包含您要搜索的目录.如果目标包含空格,请务必将其包装在引号中.因此,您将使用:`for/d/r"D:\ Projects"%d in(_svn)do @if exists"%d"rd/s/q"%d"`我经常通过替换实际来测试这些首先使用回声'工作':`for/d/r"D:\ Projects"%d in(_svn)do @if exists"%d"echo"%d"`这样我就可以看到我是什么东西了会影响. (5认同)
  • 如果要将其保存到bat文件,请不要忘记将%替换为%%. (5认同)
  • 是的,因为这个"for"的本质是它在每个目录条目中添加"_svn",因为它会递归目录树. (3认同)
  • 当我以递归方式运行时,有时候我会得到"-directory-is-not-empty"为什么会这样?这背后的原因是什么? (2认同)

Céd*_*Rup 29

是时候学习一些PowerShell了 ; o)

Get-ChildItem -path c:\projet -Include '_svn' -Recurse -force | Remove-Item -force -Recurse
Run Code Online (Sandbox Code Playgroud)

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

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

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


小智 22

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

for /d /r . %%d in (Debug Release) do @if exist "%%d" echo "%%d" && rd /s/q "%%d"
Run Code Online (Sandbox Code Playgroud)

%批处理文件中需要double 才能用作转义字符.否则它会报告语法错误.

谢谢.


Gra*_*ant 10

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