我想删除所有的bin和obj文件夹以强制所有项目重新构建。

12 浏览
0 Comments

我想删除所有的bin和obj文件夹以强制所有项目重新构建。

我在处理多个项目,我想递归地删除所有名称为“bin”或“obj”的文件夹,这样我就可以确信所有项目都会重建一切(有时这是唯一的强制Visual Studio忘记以前的所有构建的方法)。

有没有快速的方法(例如使用.bat文件)可以实现这一点,而不必编写.NET程序?

admin 更改状态以发布 2023年5月24日
0
0 Comments

我发现了这个帖子,找到了答案。再搜索一下,找到了这个Power Shell脚本:

Get-ChildItem .\ -include bin,obj -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }

或者更简洁:

gci -include bin,obj -recurse | remove-item -force -recurse

考虑到我在这里没有找到答案,所以我想分享一下。

0
0 Comments

这取决于您想要使用的shell。\n\n如果您使用的是Windows上的cmd shell,则以下方法应该可行:\n

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"

\n\n如果您使用的是bash或zsh类型的shell(例如Windows上的git bash或babun以及大多数Linux/OS X shell),那么以下方法是一种更好的、更简洁的实现方式:\n

find . -iname "bin" | xargs rm -rf
find . -iname "obj" | xargs rm -rf

\n并且可以使用OR将其简化为一行:\n\n

find . -iname "bin" -o -iname "obj" | xargs rm -rf

\n\n请注意,如果您的目录或文件名中包含空格或引号,则find将按原样读取这些条目,而xargs可能会将其拆分为多个条目。如果您的shell支持它们,则`-print0`和`-0`会解决这个缺陷,因此上述示例变为以下内容:\n

find . -iname "bin" -print0 | xargs -0 rm -rf
find . -iname "obj" -print0 | xargs -0 rm -rf

\n和:\n

find . -iname "bin" -o -iname "obj" -print0 | xargs -0 rm -rf

\n\n如果您使用的是Powershell,则可以使用以下命令(如下所示):\n

Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }

\n正如Robert H的回答中所述-如果您选择投票,则请确保为powershell回答给予他信用。\n\n当然,最好先在安全的地方运行您选择的任何命令以进行测试!

0