Copiar contenido de un subdirectorio con DOS

Resuelto
BadGamer Mensajes publicados 694 Estado Miembro -  
BadGamer Mensajes publicados 694 Estado Miembro -
Hola,

Lo que quiero hacer debería ser muy simple, pero no puedo...
Básicamente, tengo una carpeta "Fotos" que contiene subcarpetas
2010
2011
2012
Y en cada directorio hay fotos en .png, me gustaría hacer este comando para fusionar las subcarpetas en un nuevo

copy .....\Fotos\*\*.png .....\FotosFusion\


Pero tengo la impresión de que el \*\ para decir "todas las carpetas" no funciona... ¿alguna idea? =)

Configuración: Windows 7 / Chrome 23.0.1271.97

3 respuestas

  1. dourd1 Mensajes publicados 367 Estado Miembro 39
     
    Creo que hay que usar xcopy para copiar los subdirectorios

    y de memoria diría

    xcopy /E c:\toto\*.* d:\"tu rep bachup"

    o /s si no quieres los directorios vacíos

    ahí debería copiarte todos los subdirectorios de toto y los archivos en la carpeta de respaldo
    pero bueno, no sé si es exactamente lo que quieres hacer

    nicolas
    2
    1. BadGamer Mensajes publicados 694 Estado Miembro 133
       
      Quisiera fusionar el contenido de todos los subdirectorios de una carpeta. Básicamente, tengo:

      Toto> Toto1> 1.png 2.png Toto2> 3.png 4.png 


      Y quisiera tener mis fotos 1, 2, 3 y 4 en un mismo directorio.
      0
  2. dourd1 Mensajes publicados 367 Estado Miembro 39
     
    Con PowerShell, puedes utilizar el parámetro -container de copy-item:

    copy-item source destination -recurse -container:$false

    La línea anterior copiará todos los archivos de <source> "plano" en el
    directorio <destination>. El único inconveniente es que también recreará los directorios
    que están en la raíz de <source> (aunque estos directorios aparecerán vacíos
    en <destination>, todos los archivos serán correctamente copiados a la raíz de
    <destination>).

    Otra forma de proceder que no presenta este inconveniente:

    dir source -recurse | where {!$_.PSIsContainer} | foreach {copy $_.fullname
    destination}

    o

    XCOPY con un FOR.

    Ejemplo:
    FOR /R c:\rsource %%a IN (.) DO XCOPY %%a c:\rdestination /Y

    a hacer en un batch

    aquí tienes lo que debería permitirte hacer lo que quieres

    por favor confírmame si está bien o no para que lo ponga a disposición en mi sitio

    nicolas
    0
  3. BadGamer Mensajes publicados 694 Estado Miembro 133
     
    ¡Super, gracias! La solución era esta. Aquí está mi archivo bat:

    FOR /R C:\RepSource %%a IN (.) DO XCOPY %%a C:\RepArrive /Y
    pause

    el pause probablemente es innecesario
    Muchas gracias =)

    Edit: de hecho, he perdido 100MB entre los directorios de origen y de llegada... voy a buscar dónde está el problema...
    Edit2: Al principio tengo 719 elementos y al llegar 588... ¿hay alguna opción para renombrar y no eliminar en caso de mismo nombre? Porque creo que el problema viene de archivos con el mismo nombre...
    0
    1. dourd1 Mensajes publicados 367 Estado Miembro 39
       
      no creo que lo vaya a intentar, voy a tratar de ver esto por la mañana si te encuentro una respuesta.

      de lo contrario, intenta ver con robocopy, tal vez haya una opción que funcione
      http://dourd1.free.fr/wordpress-3.0.3/wordpress/?p=29
      0
    2. BadGamer Mensajes publicados 694 Estado Miembro 133
       
      De lo contrario, no me importa el nombre, primero tendríamos que renombrar todos los archivos de las subcarpetas...
      Estoy probando este registro.
      0
    3. dourd1 Mensajes publicados 367 Estado Miembro 39
       
      ¿Has conseguido hacer lo que querías?
      0
    4. BadGamer Mensajes publicados 694 Estado Miembro 133
       
      Sí, hice una búsqueda de ".png" copié y pegué todo y luego hice lo mismo con .jpg... una solución un poco improvisada, pero funciona.
      0