Ir ao conteúdo

Bat Script .BAT para deletar arquivos e pastas


Ir à solução Resolvido por Basole,

Posts recomendados

Postado

Vou tentar explicar da forma mais simples possível, o que preciso.

Tenho a pasta Alfabeto e dentro dela as pastas A,B,C,D ...Z contendo arquivos. 

Preciso de um script .bat que delete as pastas A,B,C,D ...Z e os arquivos dela mas não delete a pasta  Alfabeto.

 

Alguém pode me ajudar?

 

Obs: o nome das pastas foi só para exemplo.

  • Solução
Postado

Segue exemplo, altere o caminho correto da sua pasta "alfabeto"

del /q "C:\Temp\BACKUP\Alfabeto\*"
FOR /D %%p IN ("C:\Temp\BACKUP\Alfabeto\*.*") DO rmdir "%%p" /s /q

Cole o código no bloco de notas e salve com a extensão *.bat

  • Curtir 1
  • Obrigado 2
Postado
2 horas atrás, Basole disse:

Segue exemplo, altere o caminho correto da sua pasta "alfabeto"


del /q "C:\Temp\BACKUP\Alfabeto\*"
FOR /D %%p IN ("C:\Temp\BACKUP\Alfabeto\*.*") DO rmdir "%%p" /s /q

Cole o código no bloco de notas e salve com a extensão *.bat

Deu certinho @Basole obrigado, aproveitando, você sabe me informar o que altero no seu código para criar mais 2 pastas depois da exclusão ?

 

Seria excluir tudo de dentro da pasta alfabeto  e criar logo após duas pastas B e C.

Postado

Fiz as alterações necessárias, faça o teste e de retorno por favor. 

@echo off
del /q "C:\Temp\BACKUP\Alfabeto\*"
FOR /D %%p IN ("C:\Temp\BACKUP\Alfabeto\*.*") DO rmdir "%%p" /s /q
for /D %%x in ("C:\Temp\BACKUP\Alfabeto\") DO mkdir "%%x\B" "%%x\C"

 

  • Curtir 2
  • Obrigado 1
Postado
4 horas atrás, Basole disse:

Fiz as alterações necessárias, faça o teste e de retorno por favor. 


@echo off
del /q "C:\Temp\BACKUP\Alfabeto\*"
FOR /D %%p IN ("C:\Temp\BACKUP\Alfabeto\*.*") DO rmdir "%%p" /s /q
for /D %%x in ("C:\Temp\BACKUP\Alfabeto\") DO mkdir "%%x\B" "%%x\C"

 

Deu certo, você é o cara kkkk muito obrigado @Basole

  • Curtir 1
  • 1 ano depois...
Postado

@Basole Estou com uma dúvida parecida com essa, pegando o exemplo acima. 

 

Eu tenho uma pasta chamada Alfabeto , dentro tenho a pasta A e dentro da pasta A arquivos aa, ab, ac, ad... mas eu preciso apagar apenas os arquivos ab e ad, deixando as demais, como eu faria?

  • 2 anos depois...
  • 2 anos depois...
Postado

@ricardo_br @Basole Olá,

 

Como criaria um bat para apagar todas as pastas e subpastas e arquivos dentro de um diretório que estão com o nome final "_OLD" sem aspas?

exemplo a pasta principal é F:FR, dentro da mesma existem as pastas fulano_OLD, clicano, joao_OLD, e beltrano, preciso apagar todas as pastas que contenha o nome ou parte dele com "_OLD" sem aspas, nesse caso só no final do nome das pastas como fulano_OLD E joao_OLD

 

Agradeço antecipadamente. !

Postado

@Rosemberg Algo assim:

 

@echo off

chcp 1252 >nul
set PastaBase=F:\FR
set Deletar=_OLD
set Log=Arquivo.log

if not exist "%PastaBase%" exit
pushd "%PastaBase%"
for /f "delims=" %%a in ('dir /b /ad *%Deletar%*') do (
                                                       >>"%~dp0%Log%" echo %%~fa
                                                       rd /q /s "%%~a"
                                                      )

for /f "delims=" %%a in ('dir /b /s *%Deletar%*') do (
                                                      >>"%~dp0%Log%" echo %%~fa
                                                      del /q "%%~a"
                                                     )
popd
exit

 

Postado

@ricardo_br olá, conseguir com ajuda do Chat GPT e esqueci de avisar, vou postar pra ajudar. Todos são em Powershell

 

# Substitua o caminho_raiz pelo diretório onde deseja começar a busca
$caminho_raiz = "C:\caminho\do\seu\diretorio"
$data_atual = Get-Date -Format "yyyyMMdd_HHmmss"
$log_nome = "search_log_$data_atual.txt"
$log_path = Join-Path $caminho_raiz $log_nome

 

# Inicializa o log ou apaga o conteúdo existente
$null > $log_path

 

# Encontrar pastas que contêm "_old" no nome
Get-ChildItem -Path $caminho_raiz -Directory -Recurse | Where-Object { $_.Name -like "*_old*" } | ForEach-Object {
    $pasta_encontrada = $_.FullName
    Add-Content -Path $log_path -Value "Pasta encontrada: $($pasta_encontrada)" -Encoding UTF8
}

Write-Host "Operação de busca concluída. Verifique o log em $log_path"
 

Esse abaixo é pra encontrar e apagar com confirmação

 

# Substitua o caminho_raiz pelo diretório onde deseja começar a busca
$caminho_raiz = "C:\caminho\do\seu\diretorio"
$data_atual = Get-Date -Format "yyyyMMdd_HHmmss"
$log_nome = "delete_log_$data_atual.txt"
$log_path = Join-Path $caminho_raiz $log_nome

 

# Inicializa o log ou apaga o conteúdo existente
$null > $log_path

 

# Encontrar pastas que contêm "_old" no nome e excluí-las
Get-ChildItem -Path $caminho_raiz -Directory -Recurse | Where-Object { $_.Name -like "*_old*" } | ForEach-Object {
    $pasta_a_deletar = $_.FullName

    # Solicitar confirmação antes de excluir
    $confirmacao = Read-Host "Deseja realmente excluir a pasta: '$pasta_a_deletar'? (S/N)"
    if ($confirmacao -eq 'S' -or $confirmacao -eq 's') {
        try {
            Remove-Item -Path $pasta_a_deletar -Recurse -Force -ErrorAction Stop
            Add-Content -Path $log_path -Value "Pasta deletada: $($pasta_a_deletar)" -Encoding UTF8
        } catch {
            Add-Content -Path $log_path -Value "Erro ao deletar pasta $($pasta_a_deletar): $_" -Encoding UTF8
        }
    } else {
        Add-Content -Path $log_path -Value "Operação cancelada para a pasta: $($pasta_a_deletar)" -Encoding UTF8
    }
}

Write-Host "Operação concluída. Verifique o log em $log_path"

 

Esse abaixo é pra encontrar e apagar sem confirmação

 

 

# Substitua o caminho_raiz pelo diretório onde deseja começar a busca
$caminho_raiz = "C:\caminho\do\seu\diretorio"
$data_atual = Get-Date -Format "yyyyMMdd_HHmmss"
$log_nome = "delete_log_$data_atual.txt"
$log_path = Join-Path $caminho_raiz $log_nome

 

# Inicializa o log ou apaga o conteúdo existente
$null > $log_path

 

# Encontrar pastas que contêm "_old" no nome e excluí-las
Get-ChildItem -Path $caminho_raiz -Directory -Recurse | Where-Object { $_.Name -like "*_old*" } | ForEach-Object {
    $pasta_a_deletar = $_.FullName
    try {
        Remove-Item -Path $pasta_a_deletar -Recurse -Force -ErrorAction Stop
        Add-Content -Path $log_path -Value "Pasta deletada: $($pasta_a_deletar)" -Encoding UTF8
    } catch {
        Add-Content -Path $log_path -Value "Erro ao deletar pasta $($pasta_a_deletar): $_" -Encoding UTF8
    }
}

Write-Host "Operação concluída. Verifique o log em $log_path"

 


 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...