如何创建批处理文件以递归方式删除所有名为“bin”或“obj”的文件夹?

如何创建批处理文件以递归方式删除所有名为“bin”或“obj”的文件夹?

我需要删除 PC 上某个文件夹中的所有文件binobj文件夹。因此,我想用批处理文件来执行此操作,但我不熟悉 Windows 中的批处理文件。请帮忙。

[编辑]

与用户讨论后DMA57361,我得到了当前的解决方案(但仍然存在问题,请参阅我们的评论):

创建一个.bat 文件,并粘贴以下命令:

start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"

或者

start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"

@DMA57361:当我运行你的脚本时,出现以下错误。有什么想法吗?

替代文本

答案1

这之前已回答在 Stack Overflow 上,我从那里获得了这个答案的主要内容。

尝试以下命令,您可以从内部运行它cmd

for /d /r . %d in (bin,obj) do @if exist "%d" rd /s/q "%d"

如果需要更改其他文件夹,则只需(bin,obj)在命令中间将新项目添加到集合中。

这将删除所有匹配的内容,且不会发出警告,也不会使用回收站- 因此,如果您想要额外的安全性,请在最后删除/q从调用到的rd,系统应该在每次删除之前询问您。

for /d /r . %d in (bin,obj) do @if exist "%d" rd /s "%d"

如果你打算在批处理文件,您需要用 替换变量的每个实例%d%%d如下所示:

for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"
OR
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"

根据问题评论中的转换

如果命令拒绝在批处理文件中运行(无法在此处复制),请尝试在命令前加上前缀start。虽然这会启动与批处理文件同时运行的进程,这可能会导致其他问题,但它似乎更有可能正常工作。

另外,如果你有文件命名objbin位于命令正在处理的文件夹树中,那么您将收到每个遇到的具有匹配名称的文件的错误消息。这些匹配的文件不会被删除,也不会妨碍命令删除它应该删除的内容。换句话说,它们可以被安全地忽略。

答案2

这些命令应该在cmd上运行。

删除 *.obj

删除*.bin

答案3

做就是了

del /s /p bin
del /s /p obj

相关内容