Isso já foi respondeu no Stack Overflow, que é onde eu tirei o principal impulso desta resposta.
Tente o seguinte comando, você pode executá-lo de dentro de cmd
:
for /d /r . %d in (bin,obj) do @if exist "%d" rd /s/q "%d"
Se você precisar de outras pastas para serem alteradas, basta adicionar novos itens ao (bin,obj)
definido no meio do comando.
Isso excluirá tudo que foi correspondido sem aviso e sem usar a lixeira . Portanto, se você quiser um pouco de segurança extra, elimine o /q
da chamada para rd
no final e o sistema deve perguntar-lhe antes de cada eliminação.
for /d /r . %d in (bin,obj) do @if exist "%d" rd /s "%d"
Se você pretende executar o comando a partir de um arquivo de lote , precisará substituir todas as instâncias da variável %d
por %%d
, assim:
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"
De acordo com a conversão, os comentários foram
Se o comando se recusar a executar em um arquivo em lotes (não é possível replicar aqui), tente prefixar o comando com start
. Embora isso inicie o processo para ser executado simultaneamente com o arquivo em lote, o que pode causar outros problemas, parece mais provável que funcione corretamente.
Além disso, se você tiver arquivos com o nome obj
ou bin
na árvore de pastas em que o comando está trabalhando, você receberá uma mensagem de erro para cada arquivo que tiver um nome correspondente . Esses arquivos correspondentes não são excluídos e não devem atrapalhar o comando ao excluir o que deveria. Em outras palavras, eles podem ser ignorados com segurança.