Copiar carpetas en base a la fecha de modificación

Iniciado por arkangelX, 21 Enero 2015, 14:57 PM

0 Miembros y 1 Visitante están viendo este tema.

arkangelX

Hola, necesito copiar unas carpetas del destinoA al destinoB pero debe ser en base a la fecha de modificación. Por ejemplo copiar solo las carpetas que tengan fecha de modificación 19-01-2015, hice el siguiente código pero me copia las que quiero y ademas otras que no necesito.

xcopy /D:01-20-2015 /E /C /O \\DestinoA D:\DestinoB

Que debo modificar para que solo me copie las con fecha de modificación exacta y no otras.

PD: Estoy trabajando con Windows XP

SALu2

Eleкtro

#1
Cita de: arkangelX en 21 Enero 2015, 14:57 PMQue debo modificar para que solo me copie las con fecha de modificación exacta y no otras.

La aplicación XCopy no permite personalizar el copiado especificando el filtro que necesitas.

Puedes utilizar la aplicación de terceros XXCopy: http://www.xxcopy.com/
Citar/Do:<date>  Copies files that were changed on the specified date.

Así pues:
XXCopy.exe "\\DestinoA" \\DestinoB" /Do:01-20-2015 /E /C /SC /K /H /VL

O también puedes utilizar la aplicación RoboCopy de Microsoft:
Citar/MAXAGE:n :: Antigüedad máxima de archivo, excluir archivos más antiguos de n días o fecha.
/MINAGE:n :: Antigüedad mínima de archivo, excluir archivos más nuevos de n días o fecha.

Así pues:
RoboCopy.exe "\\DestinoA" \\DestinoB" /MINAGE:01-20-2015 /MAXAGE:01-20-2015 /E /COPY:DATSOU /DCOPY:DAT /R:999 /W:30

O bien puedes hacer el copiado utilizando técnicas de Batch (Usar el comando Dir /B /S para listar los archivos y filtrarlos según la fecha de modificación de cada), pero sería un proceso algo lento y un código engorroso debido a que Batch es un lenguaje muy limitado.

Saludos








arkangelX

Gracias Eleкtro, tu respuesta es de mucha ayuda.

SALu2.

arkangelX

Hola...

tengo el siguiente código:

RoboCopy.exe "\\192.168.0.13\Audios" "D:\Audioprueba" /maxage:3 /E /COPY:DATSO /DCOPY:T /R:999 /W:30 /XD *-1229* *-1230* *-1231*

Mi problema es con el parámetro /maxage:3, el cual me debería copiar los últimos 3 días pero me copia todo, también le he dado una fecha /maxage:20150904 y me copia todo. ¿Qué estoy haciendo mal?.

Saludos.

Eleкtro

#4
Cita de: arkangelX en 16 Septiembre 2015, 18:11 PM¿Qué estoy haciendo mal?.

Pues ...no lo se, a simple vista todo me parece correcto, la ayuda de los parámetros dicen que deberían hacer lo que tú has mencionado.

¿Por "me copia todo" te refieres a toda la estructura completa de archivos y carpetas, o solamente a las carpetas que intentas excluir?.

No creo que esto solucione el problema, pero prueba a encerrar los argumentos cómo es debido:
/XD "*-1229*" "*-1230*" "*-1231*"

Siempre puedes probar la aplicación EazyCopy para ayudarte a construir el comando de RoboCopy:
http://choeazycopy.codeplex.com/

...O alternativas a RoboCopy más sofisticadas, cómo por ejemplo XXCopy:
http://www.xxcopy.com/

EDITO: Ups, veo que he repetido la mención al programa XXCopy, lo siento xD, pero de todas formas es una muy buena herramienta a tener en cuenta ...mucho más elaborada que el RoboCopy.

Saludos








arkangelX

Gracias Eleкtro por responder, pido las disculpas por no expresarme bien.

El tema es que no me copia los archivos por fecha, en este caso quiero los de 2015 y me copia los con fecha 2013, 2014 y 2015. Con respecto a excluir -1229 -1230 -1231 esto lo hace bien.

Saludos y gracias.

Eleкtro

Cita de: arkangelX en 16 Septiembre 2015, 19:04 PM
Gracias Eleкtro por responder, pido las disculpas por no expresarme bien.

El tema es que no me copia los archivos por fecha, en este caso quiero los de 2015 y me copia los con fecha 2013, 2014 y 2015. Con respecto a excluir -1229 -1230 -1231 esto lo hace bien.

Saludos y gracias.

Con fecha de que?, ¿de creación, modificación, o último acceso?.

Míra el parámetro /MAXLAD también.

Saludos








arkangelX

Fecha de modificación, utilice:

- maxage
- minage
- minlad
- maxlad

y me copiaban todos los audios o mejor dicho las carpetas que contienes los audios y estos.

Saludos y gracias.

Eleкtro

#8
Cita de: arkangelX en 16 Septiembre 2015, 19:11 PMFecha de modificación

hmmm, pues siento decepcionarte por el tiempo que hayas invertido buscando la solución, pero ahora que me doy cuenta creo que me equivoqué al recomendarte el RoboCopy, lo siento, pero al parecer RoboCopy no permite filtrar por fecha de modificación.

"minage" y "maxage" se refieren a la fecha de creación del archivo.
"minlad" y "maxlad' se refieren a la última marca de acceso al archivo.

No parece haber nada para la fecha de modificación.




Te mostraría algún ejemplo en puro Batch pero con las filtraciones de días y patrones de búsqueda y demás se hace ddemasiado tedioso (una pérdida de tiempo).

Lo mejor tal vez sería que utilizases otra herramienta, u otro lenguaje que no sea Batch, eso también sería una solución efectiva.

En VBS se puede enumerar los archivos del árbol y comparar por fechas, se puede hacer de manera sencilla, sin embargo, si es para algún tipo de backup importante sería preferible utilizar una herramienta especializada en lugar de desarrollar el algoritmo, ¿tienes algún inconveniente en utilizar XXCOPY?, este programa si que permite filtrar por modificación de archivo de una manera bastante sofisticada, este podría ser el comando:

XXCOPY.exe "\\192.168.0.13\Audios\" "D:\Audioprueba\" /CK /CoPY /CR1 /ER /H /I /JV0 /K /NW /PD0 /PW0 /R /S /SC /TC /V /Y /DA#72H /X"*\*-1229*\*" "*\*-1230*\*" "*\*-1231*\*"
(las exclusiones no estoy seguro de si lo hice siguiendo la sintaxis correcta que indica el programa, tendrías que testearlo)

Este es el significado de cada parámetro que utilicé:
Cita de: XXCOPY/CK        Checks remaining space before copy (default).
/CoPY      Copies files specified in the src specifier to the dst directory.
/CR<n>     Sets the retry period (n seconds, default = 3) on failed copy.
/ER        Emulates XCOPY's exit code (for ERRORLEVEL check in batch files).
/H         Copies hidden and/or system files also.
/I         If destination does not exist and copying more than one file, assumes that destination must be a directory (no prompting).
/JV0       Disables versioning by simply overwriting the existing file
/K         Keeps the source attributes including read-only (same as /KS).
/NW        Uses the new (Win32) wildcard matching scheme.
/PD0       Suppresses prompt before processing each directory.
/PW0       Disables Prompt with Dialog Window (default).
/R         Allows overwrite/delete of read-only files.
/S         Copies directories and subdirectories except empty ones.
/SC        Copies all security info when file is copied.
/TC        Copies all three types of timestamps.
/V         Verifies after copy; default.
/Y         Overwrites existing files without prompt.

/DA#<n>    Copies files that were changed on or after <n> days ago.
          Note: With /DA#<val> the parameter <val> will be treated as the number of Days unless it is appended with a
          one-letter suffix (D, H, M, or S which stand for Days, Hours, Minutes, or Seconds, respectively).  
          When <val> is given in the number of days, the exact time is midnight of the day.

/X<xspec>  Adds an exclusion specifier (xspec) (see below for exclusion).
<xspec>   Exclusion item for /X.
          . The text file may contain an arbitrary number of xspecs which are separated by space, tab, or newline characters.
          . An xspec with embedded spaces must be surrounded by a pair of double-quote characters(").

          Exclusion specifier (xspec) syntax:
          . You may use any number of wildcard characters (* or ?) anywhere in an exclusion specifier (Wild-Wildcard).
          . An xspec for directories must be followed by a backslash.
          . An xspec not followed by a backslash is for files.
          . The regular syntax (directorY_template\?*\*) be used.
          . A bare file template applies to all directories. E.g., *.mp3 is treated as *\*.mp3 (*\ is implicitly assumed).

PD: Si no lo usaste por que ves que es de pago entonces te lo puedo pasar sin problemas, lo tengo craqueado desde hace mucho (pero no lo uso para nah), mándame un mp si lo quieres.

Saludos








arkangelX

Gracias por toda la información que me entregaste, algo bueno va a salir de esto, y con respecto al XXCOPY, no te preocupes yo me encargo de conseguirlo.

Gracias.  ;-) ;-) ;-)