Tengo una carpeta (llamémosla A) con muchas subcarpetas B, C, D, E, que nuevamente tienen subcarpetas B1, B2, B3, ... C1, C2, C3 ...
¿Cómo puedo usar cmd para mover todos los archivos de todas las subcarpetas a la carpeta "raíz" A?
Tengo una carpeta (llamémosla A) con muchas subcarpetas B, C, D, E, que nuevamente tienen subcarpetas B1, B2, B3, ... C1, C2, C3 ...
¿Cómo puedo usar cmd para mover todos los archivos de todas las subcarpetas a la carpeta "raíz" A?
Respuestas:
Mi publicación original no incluyó la extensión del archivo en el comando mover.
%~nisolo devuelve el nombre base, ¡debe usarlo%~nxipara obtener el nombre de archivo y la extensión! ¡Espero que no haya maltratado sus nombres de archivo en mi cuenta!
Desde un símbolo del sistema:
cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"
Si necesita limpiar las carpetas vacías después:
for /d %i in (*) do @rd /s /q "%i"
Ahora, si tiene algún conflicto de nombre de archivo, está solo. Puede agregar el /yparámetro al movecomando (antes del "%i") para forzar sobrescrituras. Si quieres algo diferente, necesitarás otro programa que pueda renombrar automáticamente todo por ti.
Además, si desea utilizar esto en un archivo por lotes, cambie todo %a %%.
FOR /r- ¡bien!
Cree una carpeta y copie todas las demás carpetas en ella, luego haga clic derecho en esa carpeta y seleccione Buscar . En el cuadro de búsqueda ingrese *.*.
Esto enumerará todos los archivos y carpetas. Seleccione todos los archivos que desee en su directorio raíz y córtelos. Navegue a su directorio raíz y pegue todos los archivos allí.
Instale Cygwin (u otro entorno Unix para Windows) y ejecute lo siguiente:
cd A
find . -type f -exec mv {} . \;
mvy sus findvariantes, es posible que deba usarlo find . -type f -exec mv -t . {} \;.
mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 cy touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/cccpara la preparación.
find . -type f -exec mv {} . ;y parecía funcionar bien.