我使用多个项目,我希望递归删除名为'bin'或'obj'的所有文件夹,这样我确信所有项目都会重建所有内容(有时这是强制Visual Studio忘记以前的唯一方法)编译).
有没有快速的方法来完成这个(例如.bat文件)而不必编写.NET程序?
这取决于您喜欢使用的shell.
如果您在Windows上使用cmd shell,则以下内容应该有效:
FOR /F "tokens=*" %%G IN ('DIR /B /AD /S bin') DO RMDIR /S /Q "%%G" FOR /F "tokens=*" %%G IN ('DIR /B /AD /S obj') DO RMDIR /S /Q "%%G"
如果你使用bash或zsh类型的shell(例如Windows上的git bash或babun或大多数Linux/OS X shell),那么这是一个更好,更简洁的方法来做你想要的:
find . -iname "bin" | xargs rm -rf find . -iname "obj" | xargs rm -rf
这可以通过OR减少到一行:
find . -iname "bin" -o -iname "obj" | xargs rm -rf
请注意,如果您的文件名目录包含空格或引号,则find将按原样发送这些条目,xargs可以将其分成多个条目.在macOS上,解决方法是使用-print0和-0,以便上面的示例变为:
find . -iname "bin" -print0 | xargs -0 rm -rf find . -iname "obj" -print0 | xargs -0 rm -rf
和:
find . -iname "bin" -o -iname "obj" -print0 | xargs -0 rm -rf
如果您使用的是Powershell,那么您可以使用:
Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
正如罗伯特H在下面的回答中所看到的那样 - 如果你选择投票,那么请确保你为powershell答案而不是我给予他赞誉:)
当然,最好先运行安全的任何命令来测试它!
我找到了这个帖子并得到了宾果游戏.再多搜索一下这个电源shell脚本:
Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
考虑到我在这里看时没找到答案,我以为我会分享.
这对我有用:
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"
基于superuser.com 上的这个答案
我总是在我的解决方案中添加一个新目标来实现这一目标.
你可以从命令行调用它
msbuild /t:clean_folders
这可以是您的批处理文件.
msbuild /t:clean_folders PAUSE
我写了一个powershell脚本来做到这一点.
优点是它打印出已删除文件夹的摘要,如果指定了要忽略的子文件夹层次结构,则忽略这些文件夹.
没有什么对我有用.我需要删除bin和obj文件夹中的所有文件以进行调试和发布.我的解决方案
1.右键单击项目,卸载,再次右键单击编辑,转到底部
2.插入
3.保存,重新加载项目,右键单击"清理"和"presto".
在清洁目标之后,像这样的东西应该以非常优雅的方式做到:
要在构建之前删除bin和obj,请添加到项目文件:
以下是文章:如何在构建或部署之前删除bin和/或obj文件夹