Como criar um arquivo em lotes que exclua todas as pastas denominadas 'bin' ou 'obj' recursivamente?

31

Tenho a necessidade de excluir todos os bin & obj pastas em uma pasta no meu PC. Então, eu estou pensando em um arquivo de lote para fazer isso, mas eu não sou famaliar com arquivo em lotes no Windows. Por favor ajude.

[Editar]

Após a discussão com o usuário DMA57361 , cheguei à solução atual (ainda tendo problemas, veja nossos comentários):

Crie um arquivo .bat e cole o comando abaixo:

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

OR

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

@ DMA57361: Quando executo seu script, recebo o erro abaixo. Alguma idéia?

    
por Nam G VU 21.10.2010 / 14:25

2 respostas

41

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.

    
por 21.10.2010 / 14:43
0

Apenas faça

del /s /p bin
del /s /p obj
    
por 20.07.2015 / 21:57