Ir ao conteúdo

Posts recomendados

Postado

O comando que estou utilizando teria alguma forma de fazer uma loading bar para esses comandos?

 

@echo off

rd /Q /s c:\$Recycle.bin

del /q/f/s %temp%\*
del /q/f/s C:\Windows\temp

del /q/f/s C:\Windows\Prefetch

del /q/f/s C:\Windows\SoftwareDistribution

Dism.exe /online /Cleanup-Image /StartComponentCleanup

 

E esses comandos com del realmente fazem a limpeza?

Postado

Veja se esse tópico pode ajudar na parte de loading bar:

 

Esse comando de apagar a pasta da lixeira com rd /q /s "C:\$Recycle.bin" acho meio perigoso não sei se isso vai dar erro ou se o Windows simplesmente cria a pasta novamente, seria melhor apagar apenas os arquivos e não a pasta inteira.

  • Membro VIP
Postado

Se o programa não possuir retorno de status, você pode montar conforme o link indicado.

Lembrar que no caso é uma estimativa, ou por etapa. Se você estimar a média de arquivos, você coloca o print para cada etapa concluída. É comum nesses casos apenas informar a etapa, por exemplo, executando tarefa 1 de 5.

 

Postado

@ricardo_br @Silvio da Fonseca

 

@echo off setlocal EnableDelayedExpansion rem Count the number of files in this dir (just as an example) set n=0 for %%f in (*.*) do set /A n+=1 set /a lengthbar=100 rem Fill "bar" variable with 70 characters set "bar=" for /L %%i in (1,1,%lengthbar%) do set "bar=!bar!X" rem Fill "space" variable with filler spaces set "space=" for /L %%i in (1,1,%lengthbar%) do set "space=!space!_" rem "Process" the files and show the progress bar in the title set i=0 echo Processing files: for %%f in (*.*) do ( set /A i+=1, percent=!i!*%lengthbar%/!n! for %%a in (!percent!) do ( set bar2=!bar:~0,%%a! set /a left=%lengthbar%-%%a for %%b in (!left!) do ( set space2=!space:~-%%b! title %%a%% !bar2!!space2! ) ) echo !i!- %%f ping -n 5 localhost > NUL )

 

teria alguma forma de adapitar isso para o que eu quero?

  • Membro VIP
Postado

@rieidi_gamer no dos passos, antes de você iniciar cada tarefa de "del" você emite um "echo".

 

Nos "scripts" precisa entender o que ele está sendo realizado, veja que ele efetua uma "leitura" dos arquivos a serem deletados e conforme são excluídos, ele fazer um "render" da barra de progresso.

  • Curtir 1
Postado

@rieidi_gamer  Se vai mudar para c++ de uma olhada no meu código

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define TAMANHO_BUFFER 256

#define TAMANHO_BARRA 60

void
barra_progresso(int progresso, char adorno);

int
extrai_progresso(int valor_atual, int valor_total);

void
barra_comum(int tamanho_barra, char adorno, char meio);

void
pausa_msg(char *msg);

int main(void)
{
    int contador;
    for (contador = 0; contador < 400; contador++) {
        barra_progresso(extrai_progresso(contador, 400), '>');
        usleep(10000);
    }
    return(0);
}

void
barra_progresso(int progresso, char adorno)
{
    int progresso_atua = (progresso*TAMANHO_BARRA)/100;
    int progresso_falta = TAMANHO_BARRA-progresso_atua;
    int contador;
    printf("\r[");
    for (contador = 0; contador < progresso_atua; contador++) {
        printf("%c", adorno);
    }
    
    for (contador = 0; contador < progresso_falta; contador++) {
        printf(" ");
    }
    printf("]-%i%%", progresso);
    fflush(stdout);
}

int
extrai_progresso(int valor_atual, int valor_total)
{
    return(((valor_atual+1)*100)/valor_total);
}

void
barra_comum(int tamanho_barra, char adorno, char meio)
{
    int contador;
    putchar(adorno);
    for (contador = 0; contador < tamanho_barra; contador++) {
        putchar(meio);
    }
    printf("%c\n", adorno);
}

void
pausa_msg(char *msg)
{
    char buffer[TAMANHO_BUFFER];
    if (msg != NULL) {
        puts(msg);
    }
    puts("Pressione enter para continuar...");
    fgets(buffer, TAMANHO_BUFFER, stdin);
}

versão online!

 

Isso é apenas um recorte desse código.

apaga_arquivos.zip

Era só um teste e não funciona 😞

Postado

fiquei com preguiça de fazer em c, então fiz em python(não testei)
 

import os
from tqdm import tqdm

dirs = ["%temp%","temp","PREFETCH","SoftwareDistribution"]
counter = []
for dir in dirs:
    counter.extend([os.path.join(os.path.expandvars(dir),name) for name in os.listdir(os.path.expandvars(dir))])
# Adicione o argumento "desc" para exibir uma descrição na barra de progresso
for dir in tqdm(counter, desc="Removendo arquivos"):
    os.system(f"rd /Q /s {dir}")

bibliotecas:
TQDM

OS

 

você pode transformar em executável usando a biblioteca auto-py-to-exe.

 

 

segundo nossa querida IA, o código equivalente em c seria esse aqui:
 

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>

const char* dirs[] = {"%temp%", "temp", "PREFETCH", "SoftwareDistribution"};
int counter_size = 0;
char** counter = NULL;

void add_dir(const char* dir) {
struct dirent entry;
DIR dir_ptr = opendir(dir);
if (dir_ptr == NULL) {
return;
}
while ((entry = readdir(dir_ptr)) != NULL) {
if (entry->d_type == DT_DIR && strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
char path = malloc(strlen(dir) + strlen(entry->d_name) + 2);
sprintf(path, "%s/%s", dir, entry->d_name);
add_dir(path);
} else if (entry->d_type == DT_REG) {
char path = malloc(strlen(dir) + strlen(entry->d_name) + 2);
sprintf(path, "%s/%s", dir, entry->d_name);
counter = realloc(counter, sizeof(char*) * (counter_size + 1));
counter[counter_size++] = path;
}
}
closedir(dir_ptr);
}

int main() {
for (int i = 0; i < sizeof(dirs) / sizeof(dirs[0]); i++) {
char* expanded_dir = getenv(dirs[i]);
if (expanded_dir != NULL) {
add_dir(expanded_dir);
}
}
for (int i = 0; i < counter_size; i++) {
char command[256];
sprintf(command, "rd /Q /s "%s"", counter[i]);
system(command);
free(counter[i]);
}
free(counter);
return 0;
}

 

Postado

@rieidi_gamer mas*

é só pedir para a IA converter e dps reajustar (assumindo que você domina c#)

using System;
using System.Collections.Generic;
using System.IO;
using ConsoleProgress;

class Program {
    static void Main() {
        string[] dirs = { "%temp%", "temp", "PREFETCH", "SoftwareDistribution" };
        var counter = new List<string>();
        foreach (string dir in dirs) {
            counter.AddRange(Directory.GetFiles(Environment.ExpandEnvironmentVariables(dir)));
        }
        int count = counter.Count;
        var progressBar = new ProgressBar(count, "Removendo arquivos");
        for (int i = 0; i < count; i++) {
            string dir = counter[i];
            progressBar.Report(i + 1);
            Directory.Delete(dir, true);
        }
        progressBar.Dispose();
    }
}

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!