Ms-Dos - Agregar tamaño al nombre

 
Vista:
sin imagen de perfil
Val: 31
Ha disminuido 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Agregar tamaño al nombre

Publicado por Yusniel (12 intervenciones) el 20/10/2020 05:30:44
Tengo varios archivos en un directorio en diferentes formatos y quisiera mantener su nombre y agregarles el tamaño que tienen pero no en bytes ya que se hace algo incómodo a ver, de ser posible si es en MB, GB, espero puedan ayudarme, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Agregar tamaño al nombre

Publicado por Antoni Masana (811 intervenciones) el 23/10/2020 01:34:12
Esto funciona para tamaños igual o inferior a 2.147.483.647. Es la limitación de los BAT, si tienes ficheros más grandes utiliza por ejemplo el Python o Windows Script.

Este versión es de prueba:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
echo off
for %%a in (The*.*) do call :Rename "%%~na" "%%~xa" "%%~za"
goto :EOF
 
:Rename
    set Nomb=%1
    set Exte=%2
    set Size=%3
    set tipo=By
 
    set Nomb=%Nomb:~1,-1%
    set Exte=%Exte:~1,-1%
    set Size=%Size:~1,-1%
 
    if %Size% GTR 1024 set /a Size=%Size%/1024 && set Tipo=KB
    if %Size% GTR 1024 set /a Size=%Size%/1024 && set Tipo=MB
    if %Size% GTR 1024 set /a Size=%Size%/1024 && set Tipo=GB
    if %Size% GTR 1024 set /a Size=%Size%/1024 && set Tipo=TB
 
    echo Size: %3
    echo Orig: "%Nomb%%Exte%"
    echo Desp: "%Nomb%-%Size%%Tipo%%Exte%"
    echo.
    goto :EOF

Y esta es para renombrar los ficheros

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
echo off
for %%a in (The*.*) do call :Rename "%%~na" "%%~xa" "%%~za"
goto :EOF
 
:Rename
    set Nomb=%1
    set Exte=%2
    set Size=%3
    set tipo=By
 
    set Nomb=%Nomb:~1,-1%
    set Exte=%Exte:~1,-1%
    set Size=%Size:~1,-1%
 
    if %Size% GTR 1024 set /a Size=%Size%/1024 && set Tipo=KB
    if %Size% GTR 1024 set /a Size=%Size%/1024 && set Tipo=MB
    if %Size% GTR 1024 set /a Size=%Size%/1024 && set Tipo=GB
    if %Size% GTR 1024 set /a Size=%Size%/1024 && set Tipo=TB
 
    name  "%Nomb%%Exte%"  "%Nomb%-%Size%%Tipo%%Exte%"
    goto :EOF

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 31
Ha disminuido 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Agregar tamaño al nombre

Publicado por Yusniel (12 intervenciones) el 23/10/2020 16:06:15
muchisimas gracias Antoni Masana, habria alguna forma de hacerle lo mismo a carpetas, probe modifica run poco los comandos, pero no di donde era
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Agregar tamaño al nombre

Publicado por Antoni Masana (811 intervenciones) el 23/10/2020 21:00:33
Hay un error en mi código:

1
name  "%Nomb%%Exte%"  "%Nomb%-%Size%%Tipo%%Exte%"

lo correcto es

1
rename  "%Nomb%%Exte%"  "%Nomb%-%Size%%Tipo%%Exte%"

o esto:

1
ren  "%Nomb%%Exte%"  "%Nomb%-%Size%%Tipo%%Exte%"

Para que el FOR lea los directorios hay que poner /D o /d

1
for /D %%a in (The*.*) do call :Rename "%%~na" "%%~xa" "%%~za"

El problema es que los directorios no tienen tamaño, buen en realidad si que tienen pero depende de la cantidad de ficheros que alberga y no de su tamaño y no se muestra ni con FOR ni con DIR.

Para renombrar un directorio se puede usar el REN, el RENAME y en MOVE.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar