Powershell para excluir todos os arquivos com uma determinada extensão de arquivo

Powershell para excluir todos os arquivos com uma determinada extensão de arquivo

Quero verificar um diretório (não há subs) e excluir qualquer arquivo com uma extensão de .avi Tentei esta sintaxe, mas nenhum erro foi gerado e nenhum arquivo foi excluído. Este é o código que eu tentei

get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}

O que deve ser alterado para excluir todos os .aviarquivos da pasta?

Responder1

Use del *.<extension>ou um de seus apelidos (como rm, se você estiver mais acostumado com bash).

Portanto, seria del *.aviexcluir todos os arquivos que terminam .avino diretório de trabalho atual.

Use del <directory>\*.<extension>para excluir arquivos em outros diretórios.


AVISO:Ambos del *.<extension>e del <directory>\*.<extension>excluirão outras extensões que correspondam ao padrão. Esses arquivos não são enviados para a Lixeira.

Exemplo: del *.doc*exclui *.doc, *.docme *.docx. O del <directory>\*.<extension>funciona de maneira semelhante.

Responder2

Assumindo o método preferido de abertura de uma instância do Powershell no diretório, uma versão genérica seria a seguinte:

Get-ChildItem *.avi | foreach { Remove-Item -Path $_.FullName }

Para uma versão específica do diretório:

Get-ChildItem -Path 'C:\Users\ramrod\Desktop\Firefly\' *.avi | foreach { Remove-Item -Path $_.FullName }

Adicione -Recursepara Get-ChildItemafetar todas as pastas contidas.

Exemplo:

Get-ChildItem *.avi -Recurse | foreach { Remove-Item -Path $_.FullName }

Responder3

ORemover itemO cmdlet deve ser tudo que você precisa. Basta passar a pasta raiz onde existem os arquivos avi e passar o -Recurseparâmetro junto com um filtro:

Remove-Item 'C:\Users\ramrod\Desktop\Firefly\*' -Recurse -Include *.avi

Isso deve ser executado mais rápido do que localizar os arquivos Get-ChildIteme invocar Remove-Itemcada um deles.

  • Adicionar a -WhatIfopção listará os itens que seriam excluídos, mas a exclusão real não será executada.
  • Adicionar a -Confirmopção irá avisá-lo antes de excluir cada arquivo, o que é mais seguro para pessoas menos confortáveis ​​comPowerShell.

Responder4

Isso finalmente funcionou para mim - tentei tudo acima e nada.

get-childitem "<drive>:\<folder>" -recurse -force -include *.<ext> | remove-item -force

claro que two -force não é necessário, mas é isso que está funcionando, então é isso que estou mantendo.

informação relacionada