Ir ao conteúdo
  • Cadastre-se

Outro Como medir porcentagens de arquivos em 2 pastas diferentes, .bat


Posts recomendados

Ola, boa tarde...

 

Tem como eu saber a porcentagem de arquivos em dois diretórios diferentes ?

e em 2 diretórios com vários subdiretórios com vários diretórios e vários arquivos em cada um ?

 

 

 

Vou dar um exemplo.

 

tenho um sistema que cria pastas e coloca arquivos .txt dentro deles

para cada função é criado uma pasta, mas tem 2 funções que vou chamar de principais.

 

pasta 1 e pasta 2

 

dentro da pasta 1, é criada a pasta nomeada com o dia, então para hoje a pasta 1 teria uma pasta com o nome 28-04-2029

na pasta 2 contece a mesma coisa, logo teria dentro da pasta 2 uma pasta com o nome 28-04-2019

 

queria saber a porcentagem de quantos txt tem dentro dessa pasta, chamada, pasta do dia (sempre a ultima a ser criada)

 

e por fim, a porcentagem total da pasta 1 e pasta 2.

 

alguem consegue me ajudar ?

Qualquer ajuda é bem vinda,

Link para o comentário
Compartilhar em outros sites

porcentagem é uma relação entre duas coisas. 

Não entendi o que quer medir :( 

E tem duas funçoes principais, como disse: "pasta 1" e "pasta 2". Então isso são duas funções mas também são duas pastas?

E o .bat no tópico quer dizer que quer medir essas porcentagens usando .bat no Windows? Não pode usar powerShell ou alguma linguagem?

Link para o comentário
Compartilhar em outros sites

Realmente tinha quer ser em bat, to quebrando a cabeça tem quase um mes. preciso saber quantos arquivos tem em cada umas pastas e subpastar, tipo um tree "pasta1" tree"pasta 2" nas pastas so tem arquivos txt. precisava saber o numero de arquivos em pasta,

e a partir dai, fazer o calculo de porcentagem.

Link para o comentário
Compartilhar em outros sites

Olá.

Acho que pode usar um efeito colateral do comando FOR, assim    

FOR %%a IN ( * ) DO SET /A n=n+1

De modo que se o diretório corrente for a pasta 1 depois do FOR %n% vai ter o total de arquivos na pasta

Escrevi um exemplo e ao rodar você tem

teste-resumo.png.215f114f4c3af00af08eaa099ea2fbc0.png

Eis a versão que imprimiu isso:

SET pasta1=A1
SET pasta2=A2
ECHO OFF

SET /A n1=0
for %%a in ( %pasta1%\* ) do SET /A n1=n1+1

SET /A n2=0
for %%a in ( %pasta2%\* ) do SET /A n2=n2+1

SET /A PE = (n1*1000/n2) 
SET /A decimal = PE %% 10
SET /A PE = PE / 10

ECHO pasta %pasta1% tem %n1% arquivos
ECHO pasta %pasta2% tem %n2% arquivos
ECHO porcentagem P1/P2 = %pe%.%decimal%%%

Note que a aquela coisa com os comandos SET na hora de calcular a porcentagem é porque, até 

onde eu sei, só tem aritmética com números inteiros em .BAT e eu queria ao menos uma decimal.

Lógico que não me preocupei com overflow na hora de multiplicar por 1000. Para um número realista de arquivos nas pastas não vai ter problemas...

 

Eis uma versão com comentários e que você pode chamar com as pastas como parâmetro, como TESTE A1 A2 para não ter que ficar editando o BAT só para trocar o nome das pastas, afinal.

 

Espero que ajude

ECHO OFF
SETLOCAL EnableExtensions

REM
REM antes testa se foram digitadas as duas pastas na linha de comando
REM
IF "%~f1" == "" (
	ECHO .
	ECHO .
	ECHO Use "Teste Pasta1 pasta2"
	ECHO .
	ECHO .			Faltam parametros
	EXIT /B 1
	)

IF "%~f2" == "" (
	ECHO .
	ECHO .
	ECHO Use "Teste Pasta1 pasta2"
	ECHO .
	ECHO .			Faltam parametros
	EXIT /B 1
	)

REM 
REM estava fixo antes: se não quer usar a linha de comando com os
REM parametros basta apagar o que tem para cima e colocar fixos
REM os nomes das pastas
REM
SET pasta1=%~f1
SET pasta2=%~f2

REM
REM pushD muda o diretorio para a pasta1 mas salva o diretorio
REM corrente para poder voltar
REM

PUSHD a1
SET /A na=0
SET p=%pasta1%

call :fQuantos
SET /A n1=%ERRORLEVEL%
ECHO pasta %pasta1% tem %n1% arquivos

REM 
REM agora volta para o diretorio original
REM
POPD
PUSHD a2
SET /A na=0
SET p=%pasta2%

call :fQuantos
SET /A n2=%ERRORLEVEL%
ECHO pasta %pasta2% tem %n2% arquivos

SET /A PE = (n1*1000/n2) 
SET /A decimal = PE %% 10
SET /A PE = PE / 10
ECHO porcentagem P1/P2 = %pe%.%decimal%%%

SET /A PE = (n2*1000/n1)
SET /A decimal = PE %% 10
SET /A PE = PE / 10
ECHO porcentagem P2/P1 = %pe%.%decimal%%%

EXIT /B 0

REM
REN fQuantos retorna em %ERRORLEVEL% o total de arquivos
REM
:fQuantos
	SET /A n=0
	for %%a in ( * ) do SET /A n=n+1
EXIT /B %n%

Claro que no comando FOR você pode trocar o * por *.TXT ou o que preferir, mudando assim o critério de selecão de contagem dos arquivos

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!