none
Deletar conteúdo de sub pastas RRS feed

  • Pergunta

  • Boa Tarde, aqui na empresa temos um diretório para os usuários guardarem seus arquivos no servidor, cada usuário possui uma pasta própria. É mais ou menos assim: C:\Usuarios\usuarioX.

    Preciso de um script (de preferência .bat) que limpe as pastas de todos os usuários. Atualmente utilizo o seguinte:

    @echo off
    echo Apagando arquivos...
    cd C:\Teste
    del /F /S /Q *.*

    Só que este deleta somente o arquivos e não deleta as pastas criadas pelos usuários dentro das suas pastas. Exemplo:

    C:\Usuarios\usuarioX\nova pasta\teste.txt

    esse script vai deletar somente o arquivo "teste.txt" e eu preciso que delete também "nova pasta".

    Agradeço se alguém poder me ajudar.

    quinta-feira, 13 de março de 2014 16:27

Respostas

  • Alef,

    A sua primeira postagem não informava que eram vária pastas que não deveriam ser apagadas, seguindo este seu último exemplo ainda usamos o FORFILES mas dentro de um FOR que vai ler cada pasta dentro de C:\Usuários.

    for /f "tokens=*" %%U in ('dir /b "c:\Usuarios\"') do (
    	forfiles /P c:\Usuarios\%%U /c "cmd /c del @path /q & rd @path /s /q"
    )

    Veja, o dir /b vai gerar uma lista de cada subpasta de c:\usuários (são as pastas que você não quer apagar), então eu rodo o FORFILES para cada pasta desta lista.


    Fábio de Paula Junior

    quinta-feira, 20 de março de 2014 02:27
    Moderador

Todas as Respostas

  • Olá,

    Tente o comando RD , com parâmetros S e Q, por exemplo:

    @echo off
    echo Apagando arquivos...

    c:\

    rd C:\Teste\ /S /Q

    md c:\teste

    echo Procedimento concluido...

    pause


    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    quinta-feira, 13 de março de 2014 16:39
  • Este script deleta a pasta do usuário:

    diretório inicial:

    C:\Usuarios\usuarioX\nova pasta\teste.txt

    após executar o script:

    C:\Usuarios

    resultado esperado:

    C:\Usuarios\usuarioX

    Obrigado

    quinta-feira, 13 de março de 2014 16:51
  • Neste caso acho que vai precisar de um script mais elaborador, pois ele vai ter que que deletar várias subpastas com nomes diferentes...vamos ver se outro colega pode ajudar...


    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    quinta-feira, 13 de março de 2014 16:55
  • Veja se este link ajuda:

    Apagar arquivos e pastas com um bat diariamente

    http://social.technet.microsoft.com/Forums/pt-BR/058a0163-cbbe-4369-b601-488ab1905d0b/apagar-arquivos-e-pastas-com-um-bat-diariamente?forum=scriptadminpt

    Exemplo:

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


    Fábio de Paula Junior

    • Sugerido como Resposta Edinaldo Junior quinta-feira, 13 de março de 2014 17:06
    quinta-feira, 13 de março de 2014 17:05
    Moderador
  • Alef,

    Resolvido?


    Fábio de Paula Junior

    segunda-feira, 17 de março de 2014 22:30
    Moderador
  • Ainda não atingi o resultado esperado..

    Acredito que deverei criar uma rotina para percorrer os dirtórios e testar se a pasta é raiz de algum usuário, se for eu devo entrar e limpar o local. Ou utilizar variáveis do sistema, pois existe mais de 200 pastas com nomes de usuários dentro da pasta "Usuários".

    C:\Usuarios\usuarioX\(conteúdo a ser deletado)

    C:\Usuarios\usuario2X\(conteúdo a ser deletado)

    C:\Usuarios\usuario7X\(conteúdo a ser deletado)

    C:\Usuarios\usuario10X\(conteúdo a ser deletado)

    ...


    • Editado Alef_NP quarta-feira, 19 de março de 2014 11:24
    quarta-feira, 19 de março de 2014 11:23
  • Alef,

    A sua primeira postagem não informava que eram vária pastas que não deveriam ser apagadas, seguindo este seu último exemplo ainda usamos o FORFILES mas dentro de um FOR que vai ler cada pasta dentro de C:\Usuários.

    for /f "tokens=*" %%U in ('dir /b "c:\Usuarios\"') do (
    	forfiles /P c:\Usuarios\%%U /c "cmd /c del @path /q & rd @path /s /q"
    )

    Veja, o dir /b vai gerar uma lista de cada subpasta de c:\usuários (são as pastas que você não quer apagar), então eu rodo o FORFILES para cada pasta desta lista.


    Fábio de Paula Junior

    quinta-feira, 20 de março de 2014 02:27
    Moderador
  • Alef,

    Funcionou?


    Fábio de Paula Junior

    segunda-feira, 24 de março de 2014 12:10
    Moderador