删除目录下所有指定名称的文件夹

上周在整理项目工程时,发现工程文件里有许多的.svn版本控制目录,是在开发阶段同步项目文件使用的。
现在想要打包备份项目工程文件,这些svn版本控制内容就完全没有必要了,而且不去除的话还占用很大的空间;
之前也遇到过,项目工程文件中有旧的svn版本控制内容,将工程重新与服务器版本同步时,会出现版本错误或冲突。

为了清除这些svn垃圾文件,网上搜索了下相关的资料。发现大部分处理脚本中核心的处理代码就一行:
@for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"

但本人没有看明白这行代码是如何实现这个功能的,于是花了周末一天时间把批处理教程翻了一遍。
自己写了一个处理脚本,不仅可以清除svn文件,还可以清除指定的文件(这个在实际中可能完全用不到了)。

直接打包成EXE文件,需要清除使用时直接双击,一分钟不到全部清除完。

@echo off

rem 设置窗口标题
@title 删除目录下所有指定名称的文件夹
rem 设置前景和背景颜色
@mode con cols=130 lines=35 & color 3f

@echo.
@echo 注意:该脚本将删除目录下所有指定名称的文件夹,执行前请您做好备份!
@echo.

@echo 您当前所在目录为:
cd
@echo.

set /p fi=请您输入需要删除的文件夹名称=
@echo.
set /p pa=请您输入需要删除文件夹目录绝对路径= 
@echo.
@echo 将帮您清除目录 "%pa%" 下所有名称为 "%fi%" 的文件夹,是否确定执行? 
set /p yn=[y/n]= 
@echo.
if "%yn%" == "y"  (  
@echo 您确定了执行  
@echo.
%pa:~0,2%
cd %pa% 

@echo 正在清除目录 "%pa%" 下所有名称为 "%fi%" 的文件夹

@echo.

rem 循环删除目录下所有指定名称的文件夹
@for /r . %%a in (.) do @if exist "%%a\%fi%" dir %%a\%fi% >>删除所有%fi%文件夹.log & echo "%%a\%fi%" & rd /s /q "%%a\%fi%"

@echo 执行成功,可查看日志文件 "%pa%\删除所有%fi%文件夹.log"

) else ( @echo 您选择了放弃执行! )

@echo. 
rem 设置提示语
@echo 请按任意键退出... &pause>nul

猜你喜欢

转载自weishaoxiang.iteye.com/blog/1973953