我与多个项目一起工作,我想递归删除所有名为“bin”或“obj”的文件夹,这样我就可以确保所有项目都会重新构建所有内容(有时这是迫使Visual Studio忘记所有以前的构建的唯一方法)。
是否有一种快速的方法来实现这一点(例如使用.bat文件),而不必编写。net程序?
我与多个项目一起工作,我想递归删除所有名为“bin”或“obj”的文件夹,这样我就可以确保所有项目都会重新构建所有内容(有时这是迫使Visual Studio忘记所有以前的构建的唯一方法)。
是否有一种快速的方法来实现这一点(例如使用.bat文件),而不必编写。net程序?
当前回答
这招对我很管用:
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"
根据superuser.com上的答案
其他回答
我找到了这条线,然后赢了。再搜索一下就找到了这个power shell脚本:
Get-ChildItem .\ -include bin,obj -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }
或者更简洁:
gci -include bin,obj -recurse | remove-item -force -recurse
考虑到我在这里找不到答案,我想我应该分享一下。
实际上,你可以进一步使用PS的建议,在项目目录中创建一个vbs文件,就像这样:
Option Explicit
Dim oShell, appCmd
Set oShell = CreateObject("WScript.Shell")
appCmd = "powershell -noexit Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse -WhatIf }"
oShell.Run appCmd, 4, false
为了安全起见,我包含了-WhatIf参数,所以如果在第一次运行时对列表感到满意,可以删除它。
http://vsclean.codeplex.com/
查找Visual的命令行工具 工作室解决方案和运行清洁 指挥他们。这可以让你清洁 打开所有这些的/bin/*目录 你手头的旧项目 你的硬盘
为了达到这个目标,我总是在我的解决方案中添加一个新的目标。
<Target Name="clean_folders">
<RemoveDir Directories=".\ProjectName\bin" />
<RemoveDir Directories=".\ProjectName\obj" />
<RemoveDir Directories="$(ProjectVarName)\bin" />
<RemoveDir Directories="$(ProjectVarName)\obj" />
</Target>
您可以从命令行调用它
msbuild /t:clean_folders
这可以是您的批处理文件。
msbuild /t:clean_folders
PAUSE
我们有一个大的。sln文件与许多项目文件。我开始了一个“ViewLocal”目录的策略,所有非源代码控制的文件都位于这个目录中。该目录中有一个“Inter”和一个“Out”目录。分别用于中间文件和输出文件。
这显然让你很容易去到你的“viewlocal”目录,做一个简单的删除,以摆脱一切。
在花时间研究如何使用脚本解决这个问题之前,您可能会考虑设置一些类似的东西。
我不会说谎,在一个大型组织中维持这样的设置已经证明....有趣。特别是当您使用像QT这样的技术来处理文件和创建非源代码控制的源文件时。但那完全是另一回事了!