none
Apagar arquivos e pastas com um bat diariamente RRS feed

  • Pergunta

  • Olá pessoas...

    O problema é o seguinte... preciso criar um arquivo bat que seja executado diariamente (task manager) que apague todos arquivos e pastas de um determinado diretório...

    O comando DEL apenas apaga os arquivos... o comando RD apaga a pasta onde os arquivos estão e não somente o conteúdo, que é meu objetivo.

    ps.: Trabalho com Linux, e para quem conhece, o que eu quero é equivalente ao "rm -rf /pasta/*"

    ps2.: O diretório em questão é compartilhado e não quero apaga-lo e recria-lo para evitar problemas, tendo em vista que esse comando terá que ser executado em horário de produção.

    Valeu pessoas!

    • Editado Heathz sexta-feira, 8 de março de 2013 15:28 esqueci de um detalhe...
    sexta-feira, 8 de março de 2013 15:25

Respostas

  • Heantz,

    Tente utilizar o comando ForFiles.

    Exemplo:

    forfiles /P c:\temp /c "cmd /c del @path /q & rd @path /s /q"

    No exemplo eu apago todos os arquivos e pastas que estão dentro de C:\temp, c:\temp não é apagado.

    Veja que não fiz qualquer tratamento no comando então tem hora que ele usa comando de apagar arquivo para tentar apagar diretório e vice-versa.


    Fábio de Paula Junior

    • Marcado como Resposta Heathz sexta-feira, 8 de março de 2013 16:01
    sexta-feira, 8 de março de 2013 15:43
    Moderador

Todas as Respostas

  • Heantz,

    Tente utilizar o comando ForFiles.

    Exemplo:

    forfiles /P c:\temp /c "cmd /c del @path /q & rd @path /s /q"

    No exemplo eu apago todos os arquivos e pastas que estão dentro de C:\temp, c:\temp não é apagado.

    Veja que não fiz qualquer tratamento no comando então tem hora que ele usa comando de apagar arquivo para tentar apagar diretório e vice-versa.


    Fábio de Paula Junior

    • Marcado como Resposta Heathz sexta-feira, 8 de março de 2013 16:01
    sexta-feira, 8 de março de 2013 15:43
    Moderador
  • muito obrigado cara... funcionou perfeitamente...

    vou dar uma lida nos comandos e tratar direitinho já que ele dá alguns erros justamente por conta de usar rd pra arquivos ou del pra pastas...

    sexta-feira, 8 de março de 2013 16:03
  • Pode ser um pouco de preciosismo mas se quiser tentar o forfiles tem uma opção @isdir que testa se o item da vez é um diretório.Os erros atuais não influenciam no funcionamento.


    Fábio de Paula Junior

    sexta-feira, 8 de março de 2013 16:40
    Moderador
  • bom dia pessoal, aqui onde trabalho uso este que funciona bem com arquivos e pastas...e posso dizer       quantos dias quero excluir os arquivos. fui adaptando conforme minha necessidade...

    REM ///////////////////////////////////////////////////////////
    REM // Define as variaveis de data //
    REM ///////////////////////////////////////////////////////////

    @REM make var nowDay
    FOR /F "TOKENS=1* DELIMS=/" %%A IN ('date/t') DO SET nowDay=%%A

    CALL ///////////////////////////////////////////////////////////
    CALL // Lista em log os arquivos encontrados //
    CALL///////////////////////////////////////////////////////////

     CALL FORFILES /S /p (local completo pasta s/ parentreses\ /d -2 /C "CMD /C echo @FILE @FDATE" > C:\Logs\%nowDay%.log

    CALL ///////////////////////////////////////////////////////////
    CALL // Remove os arquivos encontrados //
    CALL ///////////////////////////////////////////////////////////


    CALL FORFILES /S /p (local completo pasta s/ parenteses)\ /d -2 /c "CMD /C DEL @FILE /Q"   //exclui arquivos

    CALL FORFILES /S /p (local completo pasta s/ parenteses\ /d -2 /c "CMD /C DEL & rd @FILE /Q" //excluir pastas

    espero ter ajudado

    quarta-feira, 23 de abril de 2014 14:51
  • Onde você determina a quantidade de dias em que o arquivo deve ser apagado?

    Iftá-El Systemieven

    quarta-feira, 15 de abril de 2015 12:23
  • Bat top recomendo funcionou perfeitamente 
    terça-feira, 26 de maio de 2015 20:14
  • Edivaldo bom dia!

    Tentei usar o seu modelo, mas não funcionou. Vou colocar abaixo como fiz. Quero apagar nessa pasta arquivos com mais de 15 dias que não sofrem alterações.

    REM ///////////////////////////////////////////////////////////
    REM // Define as variaveis de data //
    REM ///////////////////////////////////////////////////////////

    @REM make var nowDay
    FOR /F "TOKENS=1* DELIMS=/" %%A IN ('date/t') DO SET nowDay=%%A

    CALL ///////////////////////////////////////////////////////////
    CALL // Lista em log os arquivos encontrados //
    CALL///////////////////////////////////////////////////////////

     CALL FORFILES /S /p C:\Users\psilva\Documents\Backup Rotina\ /d -15 /C "CMD /C echo @FILE @FDATE" > C:\Logs\%nowDay%.log

    CALL ///////////////////////////////////////////////////////////
    CALL // Remove os arquivos encontrados //
    CALL ///////////////////////////////////////////////////////////


    CALL FORFILES /S /p C:\Users\psilva\Documents\Backup Rotina\ /d -15 /c "CMD /C DEL @FILE /Q"


    sexta-feira, 21 de agosto de 2015 14:34
  • Pepo_sp, bom dia!

    Utilize apenas este comando o comando abaixo.

    forfiles -p “DIRETÓRIO_EX_C:\TEMP” -s -d –15 -c “cmd /c del /q @path”

    Caso você queira mais informações de como usar, veja este link.

    Abraço

    sexta-feira, 21 de agosto de 2015 15:59