Autor Tema: [ Resuelto ] Comprobar el espacio ocupado por carpetas  (Leído 175 veces)

0 Usuarios y 1 Visitante están viendo este tema.

jj35

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 235
  • Valoración: 19
  • Sexo: Masculino
Hace tiempo que escribí un bat para comprobar el espacio ocupado por carpetas, así compruebo y copio al DD externo lo que conviene para reducir el tamaño ocupado y mantener el espacio en disco.

Funciona perfectamente, pero los KBs no son exactos al estar limitado el calculo a 32 bits (9 dígitos), y compensar esa limitación multiplicando por 10. No es mucha la diferencia y sirve para lo que lo uso (un poco menos o mas, creo, pienso).

Lo realizo en unos bucles for con la ayuda del comando dir, y en estas lineas el calculo.

      set num=%%A
      set num1=!num:~0,9!
      set numGB=!num:~0,-9!
      if "!numGB!" == "" (
         set numGB=0
         set /a KB=!num1!/1024
         set /a MB=!KB!/1024
      ) else (
         set /a numGB1=!numGB!
      )
      if !numGB1! geq 1 if !numGB1! leq 9 (
      set /a KB=!num1!/1024*10
      set /a MB=!KB!/1024
      )
      if !numGB1! geq 10 if !numGB1! leq 99 (
         set /a KB=!num1!/1024*10*10
         set /a MB=!KB!/1024
      )
      if !numGB1! geq 100 if !numGB1! leq 999 (
         set /a KB=!num1!/1024*10*10*10
         set /a MB=!KB!/1024
      )

No se si sera posible mas exacto, probé en un bucle para desechar los dígitos primeros (los GBs, contando 9 desde el final), contar los dígitos de los GBs y pasarlos a set eliminando ese numero de dígitos primeros, pero claro me di cuenta que eso aun es peor.

Como las matemáticas no son mi fuerte  :decabeza:, jejeje, me pregunto si se podría hacer el calculo de otra forma mejor.

Solo puse esas lineas pues el bat completo es pesado.

Gracias. :saludo:
« Última modificación: 08 de Diciembre de 2017, 18:05 por jj35 »


Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.192
  • Valoración: 210
Re:Comprobar el espacio ocupado por carpetas
« Respuesta #1: 06 de Diciembre de 2017, 16:43 »
Sinceramente se me hace difícil imaginar el .bat para conseguir eso, y no sé las limitaciones de operaciones matemáticas en un bat.

Hace tiempo hice un .vbs para calcular eso mismo, lo he adaptado algo para dar datos en Bytes y MegaBytes. Mira a ver si te sirve.

Citar
Instrucciones:
 - Colocar este archivo en la carpeta a evaluar y ejecutarlo.
 - El resultado en InfoSize.txt.

EDITO:
No sé porqué pero cuando los MB son menores de 0,1 da el resultado en KB. Curioso.
Los Bytes y la suma están bien siempre.

EDITO 2:
Nueva versión corregida

EDITO 3:
Nueva versión más legible, iguales resultados.
« Última modificación: 08 de Diciembre de 2017, 12:17 por tebasuna51 »

jj35

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 235
  • Valoración: 19
  • Sexo: Masculino
Re:Comprobar el espacio ocupado por carpetas
« Respuesta #2: 06 de Diciembre de 2017, 16:48 »
Sinceramente se me hace difícil imaginar el .bat para conseguir eso, y no sé las limitaciones de operaciones matemáticas en un bat.

Hace tiempo hice un .vbs para calcular eso mismo, lo he adaptado algo para dar datos en Bytes y MegaBytes. Mira a ver si te sirve.

Citar
Instrucciones:
 - Colocar este archivo en la carpeta a evaluar y ejecutarlo.
 - Esperar a que termine con un mensaje. Puede tardar dependiendo del volumen a analizar.
 - El resultado en InfoSize.txt.

Descargo el archivo, mirare probare, Gracias.
Incluyo el bat en un 7z.

EDITO.
Se me paso esto.
 y no sé las limitaciones de operaciones matemáticas en un bat.

Pues pueden hacerse operaciones con set /a:
set /a num=10*(50*2)+5/(5*2) = 1000
set /a num=10*(50*2)+5/(5*2)*2^<^<1 = 2000
set /a num=10*(50*2)+5/(5*2)*2^<^<2 = 4000
Siempre que no exceda 9 dígitos.

Pero no lo uso prácticamente, soy muy torpe con los números.

Puse el bat que estaba retocando, dejo el enlace al nuevo (es igual menos el inicio).
« Última modificación: 08 de Diciembre de 2017, 00:30 por jj35 »
Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.

jj35

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 235
  • Valoración: 19
  • Sexo: Masculino
Re:Comprobar el espacio ocupado por carpetas
« Respuesta #3: 06 de Diciembre de 2017, 18:15 »
No sé porqué pero cuando los MB son menores de 0,1 da el resultado en KB. Curioso.
Los Bytes y la suma están bien siempre.


Te refieres al bat, si es eso es normal (creo) pues no es exacto el calculo al multiplicar por 10, para compensar el dígito faltante, ya que esta limitado a 9 digitos (32 bits).

Eso es lo que no se mejorar.

El script .vbs funciona bien, pero no se de de esa programación, me quede estancado en cmd  y lo poco que sabia de qbasic y me negé aprender otras cosas ya que eso me servia, como hecho de menos el antiguo qbasic.

EDITO.

Anda... te refieres al .vbs, jejeje si ya ves me dice de 42 bytes = 4,00 Mb--WordUProof                      42       4,00
Tuve que probarlo en varia carpetas hasta verlo, pero no se decirte en visual.
Si fuese en cmd con un if y comprobar si son dos dígitos los bytes decirle que lo muestre como 0,042
Ya se en cmd no puede ser (decimales) pero si sera en visual.
« Última modificación: 06 de Diciembre de 2017, 22:21 por jj35 »
Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.192
  • Valoración: 210
Re:Comprobar el espacio ocupado por carpetas
« Respuesta #4: 07 de Diciembre de 2017, 01:07 »
Parece que al intentar dividir un número menor de 104858 entre 1048576 se producen resultados anómalos.

He puesto un parche para que resultados menores de 0,1 MB aparezcan simplemente como 0.
Nueva versión en el post anterior.

Es más parece que ese problema además enlentecía el programa mucho, será algún bug interno de VBS.
Ahora el resultado es prácticamente instantáneo.

jj35

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 235
  • Valoración: 19
  • Sexo: Masculino
Re:Comprobar el espacio ocupado por carpetas
« Respuesta #5: 07 de Diciembre de 2017, 15:53 »
Gracias tebasuna, ahora si funciona perfectamente.

Código: [Seleccionar]
Carpetas             Size en Bytes   MBytes
-------------------- ------------- ----------
vimfiles                   3986359       3,80
wget-11-4                 21642614      20,64
WordPlantillas                   0          0
WordUProof                      42          0

En cuanto al ir lento en mi pc van instantáneos tanto el anterior vbs como este modificado, con la salvedad que no se muestra el primer cuadro de mensaje en este modificado, no se de visual no se decirte.

El bat  si se enlentece si hay muchas carpetas al pasar de una a otra y listar el contenido, por ejemplo en mi pc para el directorio c:\windows tarda 23 minutos (la mayoría debido a la carpeta winsxs) que le lleva mucho tiempo de analizar.

Saludos.
« Última modificación: 08 de Diciembre de 2017, 11:35 por tebasuna51 »
Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.192
  • Valoración: 210
Re:Comprobar el espacio ocupado por carpetas
« Respuesta #6: 08 de Diciembre de 2017, 11:34 »
He eliminado el primer mensaje que ya no me parece necesario.

Aunque en mi sistema sigue tardando un poco la primera vez que se ejecuta (parece que revisa el sistema de archivos).
Posteriores ejecuciones ya van instantáneas.

Supongo que siempre será más rápido que el bat.
Si necesitas alguna variante me la pides.
Aunque con Bytes y MegaBytes creo que es suficiente para un análisis de tamaños.

PD: He modificado tu mensaje para conservar el encolumnado

jj35

  • Miembro senior
  • ***
  • Desconectado Desconectado
  • Registrado: 23/05/2013
  • Mensajes: 235
  • Valoración: 19
  • Sexo: Masculino
Gracias tebasuna, solucionado, primero uso el vbs y los detalles con el bat en la carpeta "X" a examinar (si es necesario).

Saludos.
Sabe más el diablo por viejo que por diablo.

A pesar de estar envejeciendo, sigo aprendiendo, el diablo debe ser muyyy viejo.