Exclui recursivamente arquivos que correspondem ao nome do arquivo (script do PowerShell)

4

Eu tenho convertido meus antigos arquivos em lote para scripts powershell com sucesso decente. No entanto ... eu não consigo descobrir qual seria a melhor e mais eficiente maneira de fazer isso neste caso.

Este é o script em lote:

attrib -h -s *.* /s
del /s folder.jpg
del /s albumart*.jpg
del /s desktop.ini
@pause

Basicamente, ele passa pela minha pasta de músicas & subpastas e exclui todo o lixo que pode estar lá (eu tenho na minha pasta de música).

Será que algo assim funcionaria (depois de um teste rápido, mas não ...)?

$currentfolder = split-path -parent $MyInvocation.MyCommand.Definition
Get-ChildItem -Path $currentfolder -Include folder.jpg, albumart*.jpg, desktop.ini -File -Recurse | foreach { $_.Delete()}

Também seria bom ecoar o nome do arquivo excluído.

EDIT: Estou adicionando a solução totalmente funcional aqui:

$currentfolder = split-path -parent $MyInvocation.MyCommand.Definition

Get-ChildItem -Path $currentfolder -Include folder.jpg, albumart*.jpg, desktop.ini -File -Recurse | foreach { echo "Deleting: $_" ; $_.Delete()}
    
por Tup 21.06.2015 / 21:09

1 resposta

5

Mesmo que seu segundo script funcione, este é mais simples de entender e pode ser escrito em "melhor PowerShell":

$currentfolder = Get-Location
Get-ChildItem -Path $currentfolder -File -Include folder.jpg,albumart*.jpg,desktop.ini -Recurse | Remove-Item -Force -Verbose

Espero que isso ajude!

    
por 22.06.2015 / 08:22