Ir ao conteúdo
  • Cadastre-se

Bat Script .BAT para deletar arquivos e pastas


Ir à solução Resolvido por Basole,

Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • 2 anos depois...
  • 2 anos depois...

@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. !

Link para o comentário
Compartilhar em outros sites

@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

 

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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...