快速删除VS解决方案里各项目的bin/obj文件夹

先说一下VS解决方案中bin和obj这两文件夹是什么东东,以下信息源自百度。

bin目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。

obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。.


OK,之后我们回归最中心的思想了,为什么要删除掉它们?理由有三:

1、减少空间占用,有利于备份。

2、将源码上传至开源网站(诸如codeproject/sourceforge等)所必须的。

3、由观点1引申的打包后容量小拷贝迅速减少能量消耗节约生命 and so on...


接着就是到达最终目的了,如何删除它们?方法也有三:

1、人手至每一个项目(网站/程序/类库)中删除。(最笨的)

2、使用Windows的搜索功能,搜索解决方案文件夹下的bin和obj进行删除。(有点想法了)

3、写一个批处理bat文件,只要双击后让电脑帮忙搞定。(醒目)


本文的要说的方法当然不可能是1、2了,至于说批处理如何写,如下所示:

rd JT.Common\bin /s/q
rd JT.Common\obj /s/q

rd JT.Control\bin /s/q
rd JT.Control\obj /s/q


免不了要介绍下rd命令了,源自M$:

C:\>rd /?
删除一个目录。

RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

    /S      除目录本身外,还将删除指定目录下的所有子目录和
            文件。用于删除目录树。

    /Q      安静模式,带 /S 删除目录树时不要求确认


我们再回到上面的批处理,细心的人肯定会发现一个问题,如果我的解决方案里有N个项目,我岂不是要写N*2个rd命令?我有N解决方案,不就要写N*N*2个rd命令,oh my god!!!
有没有一个通用的批处理文件,是我可以不用自己再写额外的命令,一拿来就能用的?答案是有的,要不然也不会有这篇博文了,没错,就是它了:

for /f "tokens=*" %%a in ('dir obj /b /ad /s ^|sort') do rd "%%a" /s/q
for /f "tokens=*" %%a in ('dir bin /b /ad /s ^|sort') do rd "%%a" /s/q


最后就是使用方法了,很简单,把上面的两条命令写入一个名为“CleanSolution.bat”的文本文件中,然后扔到解决方案根目录,也就是与“xxx.sln”同在。
使用时双击即可,干净清爽。