Eu tenho a necessidade de apagar tudo bin
e obj
pastas em uma pasta no meu PC. Então, estou pensando em um arquivo em lotes para fazer isso, mas não sou familiar com arquivos em lotes no Windows. Por favor ajude.
[Editar]
Após 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"
OU
start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"
@ DMA57361: Quando executo seu script, recebo o erro abaixo. Qualquer ideia?
windows-7
command-line
batch-file
Nam G VU
fonte
fonte
for \/d \/r ...
- por que as barras duplas em vez defor /d /r ...
? E rodar a versão "completa" com/q
no final - como afirmo - exclui tudo sem aviso, portanto não retorna saída (ou seja, não informa quando funciona, apenas quando há um erro), você tem certeza de que o segundo executar acima não funcionou corretamente?for / %d in
e nãofor /d /r . %d in
- você precisa usar o comando inteiro abaixo, cada bit tem uma função diferente e é importante.start
e veja o que acontece. Não é o ideal, mas me pergunto se isso pode ajudar.Respostas:
Isso já foi respondido anteriormente no Stack Overflow, que é de onde tirei o principal impulso dessa resposta.
Experimente o seguinte comando, você pode executá-lo de dentro
cmd
:Se você precisar que outras pastas sejam alteradas, basta adicionar novos itens ao
(bin,obj)
conjunto no meio do comando.Isso excluirá tudo o que corresponder sem aviso e sem usar a lixeira - portanto, se você quiser um pouco de segurança extra, abandone
/q
a ligação da chamada parard
no final e o sistema deverá perguntar antes de cada exclusão.Se você pretende executar o comando a partir de um arquivo de lote , você terá que substituir todas as ocorrências da variável
%d
com%%d
, assim:De acordo com a conversão teve na pergunta comentários
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 lotes, o que pode causar outros problemas, parece mais provável que funcione corretamente.Além disso, se você tiver arquivos nomeados
obj
oubin
na árvore de pastas em que o comando está trabalhando, você receberá uma mensagem de erro para cada arquivo encontrado com um nome correspondente. Esses arquivos correspondentes não são excluídos e não devem atrapalhar o comando que exclui o que deveria. Em outras palavras, eles podem ser ignorados com segurança.fonte
Esses comandos devem funcionar no cmd.
del * .obj
del * .bin
fonte
Apenas faça
fonte