Crie um arquivo de lote para remover todos os arquivos e subpastas de uma pasta

0

Instalei recentemente um novo NAS e estou tentando criar uma pasta 'Temp' como antes, basicamente uma pasta que é usada para mover arquivos durante o horário de trabalho e, em seguida, ser excluída toda noite.

Meu conhecimento de arquivos em lote é muito limitado. Eu encontrei isso em outro site, mas não consegui fazê-lo funcionar. Espero que alguém possa explicar como posso melhorar isso ou porque não está funcionando.

@echo off
rd "C:test" /F /Q

Só para tornar as coisas um pouco mais difíceis, tenho uma subpasta chamada 'Este compartilhamento é excluído diariamente - não armazene arquivos importantes'.

Eu queria saber se é possível excluir todos os arquivos e subpastas desta pasta, mas manter a subpasta acima mencionada?

Qualquer ajuda seria muito apreciada.

James

    
por JGreen 01.12.2015 / 13:01

1 resposta

1

Para sua primeira pergunta, eu acho que você quer / S / Q não / F / Q, e a linha ECHO OFF não é necessária você pode apenas preceder o comando com @ que impede que o próprio comando seja ecoado:

@RD "C:test" /S /Q

Isso excluirá a pasta de teste e todo o seu conteúdo. Ele age na pasta de teste no local atual C: (de acordo com o seu exemplo).

Se você quiser manter a pasta 'teste \ Esta ação é excluída diariamente - não armazene arquivos importantes', então isso deve funcionar, mas você deve fornecer o caminho completo duas vezes - usei% USERPROFILE% aqui):

FOR /F "usebackq delims==" %i IN ('dir /b /s "%USERPROFILE%\test"') DO @IF "%~i" NEQ "%USERPROFILE%\test\This Share is Deleted Daily - Do Not Store Important Files" @DEL /S /Q "%i" 2>NUL

É claro que você precisa ter muito cuidado com comandos como esse, há um grande potencial para apagar acidentalmente algo útil, importante ou crítico .

Se você quiser tentar algo mais complicado, sugiro que pense em instalar o cygwin e depois escrever um script para atingir seu objetivo. o bash é muito melhor que o lote!

    
por 01.12.2015 / 13:21

Tags