Mueva los archivos de varias carpetas al directorio principal con el símbolo del sistema

8

Tengo varios archivos .rar en varias carpetas como esta:

C:\Docs\Folder1\rarfile1-1.rar
C:\Docs\Folder1\rarfile1-2.rar
C:\Docs\Folder1\rarfile1-3.rar  

C:\Docs\Folder2\rarfile2-1.rar
C:\Docs\Folder2\rarfile2-2.rar
C:\Docs\Folder2\rarfile2-3.rar  

C:\Docs\Folder3\rarfile3-1.rar
C:\Docs\Folder3\rarfile3-2.rar
C:\Docs\Folder3\rarfile3-3.rar  

Quiero mover todos los archivos .rar al directorio principal 'C: \ Docs'. Tengo más de 3 carpetas, así que estaba pensando en hacer un archivo por lotes o algo así. ¿Cuáles serían los comandos para hacer esto?
Gracias

Mella
fuente
Busqué un problema similar y encontré esta respuesta útil.
lalthomas

Respuestas:

15

Acabo de crear una aplicación de línea de comandos que hace exactamente esto (además muestra algunas estadísticas) y busqué para ver si alguien estaba tratando de hacerlo para poder compartirlo y salvar a alguien de tener que resolverlo.

Fue muy divertido escribir. Requiere .NET 3.5, funciona desde la línea de comandos, llame con -h o sin parámetro para su uso.

MoveFilesUpFromSubfolders
(código fuente)

Comentarios un plus! :)

Ah, y captura de pantalla de cómo se ve:

                               

Camilo Martin
fuente
3
+1 Escribir un programa para resolver el problema de alguien. Eso es compromiso!
Li-aung Yip
1
@ Li-aungYip Muchas gracias por el cumplido! Además, debido a las circunstancias, ya no tengo el disco duro donde solía codificar en el momento en que hice esto (habiendo perdido esto y muchas otras cosas), así que estoy muy feliz de verlo aquí y lo he descargado ahora ( Felicitaciones a Mediafire por almacenarlo durante tanto tiempo con pocas descargas, ¡y tengo suerte de no haberlo guardado en Megaupload!). Entonces, si lo pones en perspectiva, cuanto más das, más recibes :)
Camilo Martin
¡Buen trabajo! +1 y 50 rep. Sé que esto tiene 4.5 años, pero esto fue muy útil para mí porque descargué más de 90 archivos que iban en más de 90 carpetas. Esto me ayudó a poner todos los archivos en su carpeta principal.
La única crítica que tengo es que cuando intenté usar esto, seguía apareciendo un error sobre un problema con la carpeta, y no decía por qué. Solo al usar el comando -t pude determinar por qué había un problema con la carpeta (porque tenía un nombre con más de 250 caracteres). Esto se evita fácilmente resaltando todas las carpetas y renombrando una de ellas (luego el resto se agregará con un número).
@ edmastermind29 Estoy súper feliz de saber que un código mío tan antiguo ha sido útil para alguien todavía. Lo creas o no, el archivo del código fuente fue retirado de mediafire por ser marcado automáticamente como infracción de derechos de autor (lo cual es bastante absurdo, considerando que no hay video o audio, sino solo texto), y no tengo idea de cómo hice esto . Si es de alguna utilidad, en este punto escribiría un bash one-liner para tratar un problema como este, algo así como mv dir/sub/* dir; rmdir dir/subun bucle.
Camilo Martin
7

Prueba esto:

for /d %f in (docs\*) do (
pushd %f
move .\*.* ..
popd
)
BillP3rd
fuente
¿Puedes explicar esto un poco más?
Nick
@Nick: para todas las carpetas docs, ingrese la carpeta. Mover todos los archivos de la carpeta actual a la carpeta principal. Regresar a la carpeta principal.
Hola71
El pushdy popdno es realmente necesario. cdfuncionaría bien.
Hola71
Según lo explicado por Hello71. Además, podría hacerse con una sola línea:for /d %f in (docs\\*) do move %f\\*.* docs
BillP3rd
1
NÓTESE BIEN. Ni el original anterior ni el de una sola línea tratarán adecuadamente los nombres de archivos duplicados.
BillP3rd
5

Bueno, la respuesta a tu pregunta es muy simple. No es un guión, pero lo hará.

Asumí que estás ejecutando Windows.

  • Colócate en el directorio C: \ Docs
  • Presione F3 (buscar)
  • Busque * .rar
  • Presione Crtl + A
  • Presione Ctrl + X
  • Cierre la ventana de búsqueda y vuelva a ir a C: \ Dosc en el explorador
  • Pegue los archivos cortados presionando CTRL + V.
integratorIT
fuente
+1 para una solución simple y agradable sin terceros ni scripts.
Syakur Rahman
+ 1 método mejor y más rápido A +++
Enfermo
3

La succión funcionó para mí en este tema.

Suction es una aplicación portátil y gratuita que ayudará a resolver las carpetas desordenadas en muy poco tiempo.

La succión funciona mediante la consolidación de directorios principales. Por ejemplo, si su directorio de imágenes está lleno de carpetas innecesarias, arrastre la carpeta a la interfaz de Succión y eliminará las carpetas, dejándolo solo con los archivos. Esto también es útil para las personas que descargan muchas cosas.

Raystafarian
fuente
0

Esto debería funcionar:

move C:\Docs\*\* C:\Docs
Hola71
fuente
2
Me sale el error: el nombre del archivo, el nombre del directorio o la sintaxis de la etiqueta del volumen es incorrecta.
Nick
El ** no funcionó
Nick
Debes asegurarte de poner el \ \ `y que tu editor de texto no pueda escapar.
Hola71
La emisión de este comando desde un indicador CMD (en Windows 7) genera el error anotado por Nick.
BillP3rd
Esto no funcionara. * no funciona correctamente para las carpetas. Tengo que romper los programas de terceros como Total Commander.
surfasb
0

Ejemplos de copiar o mover archivos de subdirectorios a un solo directorio

para / f "tokens = *"% a en ('dir "C: \ Temp \ Epub * .epub" / s / b') copia / y "% a" C: \ Temp \ epub.

para / f "tokens = *"% a en ('dir "C: \ Temp \ Epub * .epub" / s / b') mover / y "% a" C: \ Temp \ epub

el "tokens = * es capturar rutas con caracteres especiales

usuario340812
fuente