Ms-Dos - Renombrar archivos dentro de subcarpetas con una lista

 
Vista:
sin imagen de perfil

Renombrar archivos dentro de subcarpetas con una lista

Publicado por Luis (3 intervenciones) el 29/03/2023 03:07:03
Hola,
Tengo archivos de video dentro de varias subcarpetas, por ejemplo, carpeta01, carpeta02, carpeta 03, etc. Los archivos de video que me interesan tienen extensión *.mp4 y los quiero renombrar con los nombres de una lista.txt . El renombrado lo quiero aplicar a los archivos de cada subcarpeta pero reiniciándolo cada vez que cambio de carpeta otra vez con los mismos nombres de la lista.txt

¿Alguien puede ayudarme con esto para hacer un archivo .bat ? 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
sin imagen de perfil

Renombrar archivos dentro de subcarpetas con una lista

Publicado por Luis (3 intervenciones) el 30/03/2023 04:10:02
Hola con este codigo he conseguido renombrar los ficheros de la primera subcarpeta, ¿ Como puedo hacer para que haga lo mismo con todas las subcarpetas? En cada subcarpeta quiero aplicar el mismo proceso de renombrado. Al final no he usado la lista txt con los nombres porque como solo son dos nombres me puede valer metiendolos en el codigo.

@echo off

set "folder=E:\Carpetas"

set "firstFile="
set "secondFile="

for /r "%folder%" %%a in (*) do (
if not defined firstFile (
set "firstFile=%%a"
) else if not defined secondFile (
set "secondFile=%%a"
goto :rename_files
)
)

:rename_files
if defined firstFile (
ren "%firstFile%" "P1video_BB00"
)
if defined secondFile (
ren "%secondFile%" "P1video_BV01"
)

echo Archivos renombrados.
pause >nul
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

Renombrar archivos dentro de subcarpetas con una lista

Publicado por Antoni Masana (811 intervenciones) el 30/03/2023 21:15:36
Esto te trata desde la carpeta01 hasta la carpeta99

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@echo off
for /l %%n in (101, 1, 199) do Call :Carpeta %%n
goto :EOF
 
:Carpeta
    set Num=%1
    set Num=%Num:~1,2%
    set "folder=E:\Carpetas\Carpeta%Num%"
 
    set "firstFile="
    set "secondFile="
 
    for /r "%folder%" %%a in (*) do (
        if not defined firstFile (
           set "firstFile=%%a"
        ) else if not defined secondFile (
           set "secondFile=%%a"
           goto :rename_files
        )
    )
 
:rename_files
    if defined firstFile   ren "%firstFile%"  "P1video_BB00"
    if defined secondFile  ren "%secondFile%" "P1video_BV01"
 
    echo Archivos renombrados.
    pause >nul

Saludos.
\\//_
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
sin imagen de perfil

Renombrar archivos dentro de subcarpetas con una lista

Publicado por Luis (3 intervenciones) el 03/04/2023 01:43:42
Muchas gracias Antoni por contestar el codigo que me has propuesto no acaba de funcionar, se renombra solo los archivos de la primera carpeta pero no el resto, pero ya lo he solucionado. El problema creo que estaba en el goto que no vuelve despues al bucle for. Tambien he puesto otra condicion mas en el renombrado, renombrar primero el archivo de menor tamaño primero con la funcion DIR. Pero ahora me surge otro problema con la estructura de carpetas que necesito mantener que seria: Carpetas\PerID1\TSim1\Sim1\, Carpetas\PerID2\TSim2\Sim2\, etc, como se podria hacer esta iteración de las rutas de los directorios ??? gracias

@echo off
setLocal EnableDelayedExpansion

for /d %%a in ("%folder%\*") do (
for /d %%f in ("%%a\Carpetas\PerID1\TSim1\Sim1\*") do (
set "firstFile="
set "secondFile="

rem Ordenar los archivos por tamaño
for /f "delims=" %%b in ('dir /b /o:s /a:-d "%%f"') do (

if not defined firstFile (
set "firstFile=%%f\%%b"
ren "%%f\%%b" "P1A00.mp4"
) else if not defined secondFile (
set "secondFile=%%f\%%b"
ren "%%f\%%b" "P1B01.mp4"

echo "Renombrando first File"
set "firstFile="
echo "Renombrando second File"
set "secondFile="
echo "Archivos renombrados"
)
)
)

)

pause >nul
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

Renombrar archivos dentro de subcarpetas con una lista

Publicado por Antoni Masana (811 intervenciones) el 04/04/2023 19:05:44
Esto recorre las carpetas:

1
2
3
4
5
6
7
8
9
Carpetas\PerID1\TSim1\Sim1\
Carpetas\PerID2\TSim2\Sim2\
Carpetas\PerID3\TSim3\Sim3\
Carpetas\PerID4\TSim4\Sim4\
Carpetas\PerID5\TSim5\Sim5\
Carpetas\PerID6\TSim6\Sim6\
Carpetas\PerID7\TSim7\Sim7\
Carpetas\PerID8\TSim8\Sim8\
Carpetas\PerID9\TSim9\Sim9\

Codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
setLocal EnableDelayedExpansion
 
for /l %%n in (1, 1, 9) do (
    for /d %%a in ("%folder%\*") do (
        for /d %%f in ("%%a\Carpetas\PerID%%n\TSim%%n\Sim%%n\*") do (
            set "firstFile="
            set "secondFile="
 
            rem Ordenar los archivos por tamaño
            for /f "delims=" %%b in ('dir /b /o:s /a:-d "%%f"') do (
 
                if not defined firstFile (
                    set "firstFile=%%f\%%b"
                    ren "%%f\%%b" "P1A00.mp4"
                ) else if not defined secondFile (
                    set "secondFile=%%f\%%b"
                    ren "%%f\%%b" "P1B01.mp4"
 
                    echo "Renombrando first File"
                    set "firstFile="
                    echo "Renombrando second File"
                    set "secondFile="
                    echo "Archivos renombrados"
                )
            )
        )
    )
)
pause >nul

Como no se dentro de PerID1 cuantas carpetas TSim*, ni dentro de esta, cuantas carpetas Sim* la cosa puede cambiar.

Saludos.
\\//_
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