Apagada docs

Aprendiendo a programar el pasado

Herramientas de usuario

Herramientas del sitio


es:bat:contar_tamano_de_archivos

Contar Tamaño

Contar tamaño de archivos. Esto sirve para medios donde el archivo no contiene la información total del tamaño grabado, por ejemplo en un blu-ray estropeado. Téngase en cuenta que el límite aritmético de cmd.exe es aproximadamente 2 147 483 647, por lo que no funcionará si un archivo individual ocupa más de ese tamaño de bytes.

Este script requiere set /a y la expansión retardada de variables; por tanto, no funcionará en sistemas Ms-DOS, solamente en windows XP y posteriores.

contartamanno.cmd
 
@echo off
rem Contar tamaño de archivos
rem esto sirve para medios donde el directorio no
rem contiene la información, por ejemplo
rem un blu-ray estropeado.
rem -------------------------------------
rem NO FUNCIONA SI UN ARCHIVO MIDE MÁS DE 2E9 bytes
rem (2 gigas) 2 000 000 000
rem Se podría adaptar cambiando su tamaño a 
rem cadenas de texto, pero tendría que averiguar
rem cómo descartar los ceros.
 
setlocal enabledelayedexpansion
for %%a in ("%0") do (
 if %%~pa.==. (
   set comando=%%a
 ) else (
   set comando=%cd%\%%a
 )
)
set acumula=0
if not !acumula!.==0. (
  cmd /x:on /C %cd%\%comando% %*
  exit
)

rem el valor más grande que puede
rem contar set /a es
rem 2147483647 
rem así que necesitamos varios acumuladores:
rem acumula (de 0 a 999 999 999)
rem acumulab (de 0*10e9 a 0*10e19)
rem acumulac (de 0*10e19 a 0*10e29)
 
set DiezE9=1000000000
set acumula=0
set acumulb=0
set acumulc=0
 
for %%a in (*.*) do (
  set /A acumula= !acumula! + %%~za
  if !acumula! geq %DiezE9% (
echo acumulador mayor que 10e9
    set /A cociente= !acumula! / %DiezE9%
echo set /A resto= !acumula! %% %DiezE9%
    set /A resto= !acumula! %% %DiezE9%
    echo resto: !resto!
echo set /A acumulb= !acumulb! + !cociente!
    set /A acumulb= !acumulb! + !cociente!
    set /A acumula= !resto!
echo set /A acumula= !resto!
    echo acumuladores: c:!acumulc! b:!acumulb! a:!acumula!
    rem pause
    if !acumulb! geq %DiezE9% (
      set /A cociente= !acumulb! / %DiezE9%
      set /A resto= !acumulb! %% %DiezE9%
      set /A acumulc= !acumulc! + !cociente!
      set /A acumulb= !resto!
      echo acumuladores: c:!acumulc! b:!acumulb! a:!acumula! 
      pause
    )
  )  
echo !acumulc! !acumulb! !acumula! (%%a)
rem pause
)
@echo off
set acumulc= 000000000%acumulc%
set acumulb= 000000000%acumulb%
set acumula= 000000000%acumula%
echo TOTAL: 
echo %acumulc:~-9%%acumulb:~-9%%acumula~:-9%
echo %acumulc:~-9,3% %acumulc:~-6,3% %acumulc:~-9,3% %acumulb:~-6,3% %acumulb:~-3,3% %acumula:~-9,3% %acumula:~-6,3% %acumula:~-3,3%
Este sitio web utiliza cookies. Al utilizar el sitio web, usted acepta almacenar cookies en su computadora. También reconoce que ha leído y entendido nuestra Política de privacidad. Si no está de acuerdo abandone el sitio web.Más información
es/bat/contar_tamano_de_archivos.txt · Última modificación: 2025/02/11 08:44 por nepenthes