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.
%~ni
solo devuelve el nombre base, ¡debe usarlo%~nxi
para 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 /y
parámetro al move
comando (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 {} . \;
mv
y sus find
variantes, 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 c
y touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/ccc
para la preparación.
find . -type f -exec mv {} . ;
y parecía funcionar bien.