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 .avi
arquivos da pasta?
Responder1
Use del *.<extension>
ou um de seus apelidos (como rm
, se você estiver mais acostumado com bash).
Portanto, seria del *.avi
excluir todos os arquivos que terminam .avi
no 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 -Recurse
para Get-ChildItem
afetar 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 -Recurse
parâ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-ChildItem
e invocar Remove-Item
cada um deles.
- Adicionar a
-WhatIf
opção listará os itens que seriam excluídos, mas a exclusão real não será executada. - Adicionar a
-Confirm
opçã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.