Necesito Batch que me traiga de una carpeta que tiene varias subcarpetas y en varios niveles los archivos a la primer carpeta

necesito un Batch que de una carpeta que tiene varias subcarpetas y estas subcarpetas tienen a su vez varias carpetas mover todos los archivos y pegarlos a la primer carpeta, ejemplo: la carpeta es d:\datos , y hay archivos en d:\datos\noviembre\d1\archivoN1.txt , d:\datos\noviembre\d2\archivoN2.txt , d:\datos\noviembre\archivoN0.txt , d:\datos\diciembre\d1\archivoD1.txt , necesito cortar y mover éstos archivos y que estén todos en d:\datos , si alguien tiene alguna idea se los agradezco.

1 respuesta

Respuesta
1

Prueba con esto:

@echo off
Setlocal enabledelayedexpansion
d:
cd \datos
for /f %%a in ('dir /S /B /ad') do (
set carp=%%a
move /Y !carp!\*.*
Rmdir ! Carp!
)
for /f %%a in ('dir /S /B /ad') do (rmdir %%a)

Supongo que quieres borrar las carpetas una vez vaciadas. Si no fuera así elimina el "rmdir" del primer bucle "for" y la totalidad del segundo "for" (este último es necesario porque, según el orden de tratamiento de las carpetas, en el primer bucle se puede intentar borrar alguna antes de que se hayan movido sus archivos o antes de que se hayan eliminado todas sus subcarpetas con lo que sale el mensaje "El directorio no está vacío"). Una advertencia, el editor de la página a veces separa la primera admiración (!) del nombre de la variable; si ocurriera eso debes saber que no hay espacios entre las admiraciones y el nombre de la variable "carp".

Ya me contarás.

Ocurrió como me temía. Además de poner en mayúsculas la primera letra del primer "rmdir" y de la tercera "carp" aunque este otro problema no afecta al funcionamiento del bat, a diferencia del primero que lo invalida.

Muchas gracias por la ayuda, ya lo probé y funciona correctamente, en este caso si requiero las subcarpetas ya que se seguirá poniendo información en ellas, así es que le borré el rmdir y todo funciona excelente, muchas gracias y saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas