top of page

PowerShell: Apagando todas as pastas vazias de um diretório

Atenção: Este código pode excluir pastas que você talvez considere importantes.
  • Para testar o código, crie um ambiente controlado com pastas vazias.

  • Antes de usar, certifique-se de que não há nenhuma subpasta importante nas pastas que deseja excluir.

  • Este site não se responsabiliza por quaisquer danos causados pelo uso indevido deste script.


Pastas vazias de um diretório podem sobrecarregar seu computador e dificultar a localização dos arquivos necessários. Felizmente, usando o PowerShell, você pode excluir facilmente pastas vazias do seu sistema, liberando espaço valioso e facilitando a localização dos arquivos necessários.


Neste artigo, orientaremos você nas etapas para localizar e remover diretórios vazios usando o PowerShell. Quer você seja um usuário novato ou experiente, este guia o ajudará a otimizar a estrutura de arquivos do seu computador.


Antes de utilizar o script você precisa habilitar a execução deles no PowerShell. Clique na imagem abaixo para ver como.


Habilitar Scripts PowerShell

Uma vez habilitada a execução de scripts, crie um arquivo com a extensão *.ps1 e cole o código abaixo:


# Função para apagar os diretório vazios
function Apagar-Diretorios {

    # Diretório pai
    $Path = Get-FolderBrowserDialog

    # Encontrar pastas vazias
    Get-ChildItem -Path $Path -Force -Recurse -Directory | Where-Object {         (Get-ChildItem -Path $_.FullName -Recurse -File -EA SilentlyContinue | Measure-Object).Count -eq 0 } | Select FullName | Format-Table -AutoSize

    # Apagar pastas vazias
    Get-ChildItem -Path $Path -Force -Recurse -Directory | Where-Object { (Get-ChildItem -Path $_.FullName -Recurse -File -EA SilentlyContinue | Measure-Object).Count -eq 0 } | Remove-Item -Force -Recurse

}

# Função para exibir o diálogo de seleção de pasta
function Get-FolderBrowserDialog {
    Add-Type -AssemblyName System.Windows.Forms
    $folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
    $folderBrowser.Description = "Selecione o diretorio pai"
    $folderBrowser.RootFolder = "MyComputer"
    $folderBrowser.ShowNewFolderButton = $false
    if ($folderBrowser.ShowDialog() -eq 'OK') {
        return $folderBrowser.SelectedPath
    } else {
        return $null
    }
}

# Chamando a função para selecionar o diretório pai
Apagar-Diretorios

Caso seu código esteja retornando erro, talvez seja por conta da codificação do arquivo. Experimente executar:


powershell -NoProfile -ExecutionPolicy Bypass -Command "& {Set-Content -Path .\seu_codigo.ps1 -Value (Get-Content -Path .\seu_codigo.ps1 -Encoding UTF8) -Encoding UTF8 ; .\seu_codigo.ps1}"

Substitua seu_codigo pelo nome do arquivo. Você deve usar esses comandos para abrir um arquivo .ps1 no PowerShell com codificação UTF-8 no Prompt de Comando porque eles garantem que o arquivo seja interpretado corretamente e evita problemas de caracteres especiais ou acentuados em seu código.


Veja abaixo como usar seu código!


Compartilhe este conteúdo!

Posts recentes

Ver tudo
bottom of page