none
Script para excluir pasta/subpasta e arquivos por nome de pasta RRS feed

  • Pergunta

  • Bom dia pessoal, visualizei varios topicos aqui no forum de como excluir pastas usando a data de criação,modificação ou tipo de arquivo, mas não consegui achar ou fazer uma rotina para a necessidade apresentada.

    O servidor é Windows 2003 e tenho uma estrutura de diretorios parecida com a opção abaixo:

    D:\A

    D:\A\M1

    D:\A\M1\200801

    D:\A\M1\200802

    D:\A\M1\200803

    D:\A\M1\200901

    D:\A\M1\200902

    D:\A\M2

    D:\A\M2\200801

    D:\A\M2\200802

    D:\A\M2\200803

    D:\A\M2\200901

    D:\A\M2\200902

    Dentro da ultima pasta listada tenho vários arquivos .jpg e a estrutura de pastas é muito grande para fazer manualmente,mas eu preciso criar uma rotina para excluir pastas e subpastas que iniciam com o nome 2008 e também exclua os arquivos dentro delas. Não posso usar data de criação pois senão deletarei pastas erradas.

    Poderiam me ajudar?

    Obrigado

    quarta-feira, 15 de junho de 2011 15:19

Respostas

  • Em PowerShell (.ps1).

     

    dir "D:\A" -recurse -filter "2008*" | Where {$_.psIsContainer -eq $true} | remove-item -r
    

    Este dir exibe todos os nomes de arquivos e pastas que começam com 2008, depois o comando where filtra para pegar somente as pastas, por ultimo o item é removido com a opção -r (recurse) para que sejam apagados os arquivos\pastas (caso existam)


    Fábio de Paula Junior
    quarta-feira, 15 de junho de 2011 17:40
    Moderador
  • Se você quiser ver o que ele vai deletar antes de realmente deletar use o script abaixo.

    $Pastas = dir "D:\A" -recurse -filter "2008*" | Where {$_.psIsContainer -eq $true} 
    $Pastas | select FullName
    


    Veja que ele é similar ao primeiro mas sem o comando "remove-item", ele coloca a lista de diretórios na váriavel $Pastas, na segunda linha eu imprimo o caminho das pastas selecionadas.

     

     


    Fábio de Paula Junior
    quarta-feira, 15 de junho de 2011 19:11
    Moderador

Todas as Respostas

  • Em PowerShell (.ps1).

     

    dir "D:\A" -recurse -filter "2008*" | Where {$_.psIsContainer -eq $true} | remove-item -r
    

    Este dir exibe todos os nomes de arquivos e pastas que começam com 2008, depois o comando where filtra para pegar somente as pastas, por ultimo o item é removido com a opção -r (recurse) para que sejam apagados os arquivos\pastas (caso existam)


    Fábio de Paula Junior
    quarta-feira, 15 de junho de 2011 17:40
    Moderador
  • Se você quiser ver o que ele vai deletar antes de realmente deletar use o script abaixo.

    $Pastas = dir "D:\A" -recurse -filter "2008*" | Where {$_.psIsContainer -eq $true} 
    $Pastas | select FullName
    


    Veja que ele é similar ao primeiro mas sem o comando "remove-item", ele coloca a lista de diretórios na váriavel $Pastas, na segunda linha eu imprimo o caminho das pastas selecionadas.

     

     


    Fábio de Paula Junior
    quarta-feira, 15 de junho de 2011 19:11
    Moderador
  • Obrigado, vou instalar o powershell no servidor e verificar.

     

    quarta-feira, 15 de junho de 2011 19:40
  • Muito bom,,  simples e pratico.

     

    Funcionou perfeitamente.

     

    Obrigado

    quarta-feira, 15 de junho de 2011 22:51