Mueva subsubcarpetas y archivos por lotes hasta un nivel

Mueva subsubcarpetas y archivos por lotes hasta un nivel

Tengo un directorio que se parece a este

Root Folder
  - Folder A
    - Subfolder
        - File1
        - File2
        - File3
  - Folder B
    - Subfolder
        - File1
        - File2
        - File3
  - Folder C
    - Subfolder
        - File1
        - File2
        - File3

Ahora quiero mover la subcarpeta y los archivos hacia arriba en un nivel y eliminar la carpeta una vez que haya subido, por lo que debería verse así

Root Folder
    - Subfolder
        - File1
        - File2
        - File3
    - Subfolder
        - File1
        - File2
        - File3
    - Subfolder
        - File1
        - File2
        - File3

¿Existe un método por lotes para hacer esto en Windows?

Respuesta1

Si hay un patrón para "Carpeta [a|b]" que no se duplica en los nombres de las "subcarpetas", entonces sí, este es un script por lotes bastante simple.

for /d %%d in ("folder*") do call :doit "%%d"
exit /b

:doit
@echo.Moving contents of "%~1" to "%cd%"...
pushd "%~1"
forfiles /c "cmd /c move @file .."
popd
@echo.Removing "%~1"
rd "%~1"
exit /b

De nuevo, esmuyEs importante comprender que esto requiere un patrón para los nombres de las carpetas ("carpeta*"). Si esto se replica dentro de sus carpetas de contenido, entoncesvoluntadperder datos.

información relacionada