Ayuda script Batch copia de archivos

Iniciado por Hyoga82, 13 Junio 2013, 18:32 PM

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

Hyoga82

Buenas tardes.

Antes de nada dar las gracias a toda la gente que hace posible este increíble foro en que he pasado incontables horas y he solucionado otras tantas dudas.

Al grano;

Tengo el siguiente script:

FOR /D %%o in (*) DO (
xcopy %%o\*.* "...destino..." /v /s /e /q
)


Funciona bien, me recorre todos los directorios de la carpeta donde lo ejecuto, y va copiando el contenido de los mismos en la carpeta destino que le indique.

Pero me recorre los directorios por orden alfabético, lo que quiero es que los recorra desde el más antiguo al más nuevo, ¿cómo puedo hacerlo? ¿Hay alguna opción para que el FOR liste por orden de última edición? algo similar a un:

dir /OD



Un saludo y muchas gracias


Eleкtro

Cita de: Hyoga82 en 13 Junio 2013, 18:32 PMlo que quiero es que los recorra desde el más antiguo al más nuevo
¿Por fecha de creación, o por fecha de modificación?

Un ejemplo:

Código (dos) [Seleccionar]
@Echo OFF

(for /D %%# in ("*") Do (
Set "DateTime=%%~t#"
Call Set "Y=%%DateTime:~6,4%%"
Call Set "M=%%DateTime:~3,2%%"
Call Set "D=%%DateTime:~0,2%%"
Call Echo %%Y%%%%M%%%%D%% %%~f#
))>"%TEMP%\dirs.tmp"

For /F "tokens=1,*" %%A  in ('Type "%TEMP%\dirs.tmp" ^| SORT') Do (
Echo %%B
REM xcopy "%%B" ...
)

Pause&Exit


Saludos!








Hyoga82

#2
Si señor, buenísimo tio.  ;-) Muchas gracias.

Efectivamente lo que quería es ordenar por fecha de modificación, me gustaría añadir también hora, para que la ordenación sea mas exacta. Se me ocurre hacer algo como lo que pongo a continuación, pero no sé como extraer hora y minutos del DateTime:


@Echo OFF

( for /D %%# in ("*") Do (
Set "DateTime=%%~t#"
Call Set "Y=%%DateTime:~6,4%%"
Call Set "M=%%DateTime:~3,2%%"
Call Set "D=%%DateTime:~0,2%%"
Call Set "H=%%DateTime:~x,x%%"
Call Set "m=%%DateTime:~x,x%%"
Call Echo %%Y%%%%M%%%%D%%%%H%%%%m%% %%~f#
))>"%TEMP%\dirs.tmp"

For /F "tokens=1,*" %%A  in ('Type "%TEMP%\dirs.tmp" ^| SORT') Do (
Echo %%B
REM xcopy "%%B" ...
)

del "%TEMP%\dirs.tmp"





Un saludo

Hyoga82

Vale, no era tan dificil...

@Echo OFF

( for /D %%# in ("*") Do (
Set "DateTime=%%~t#"
Call Set "Y=%%DateTime:~6,4%%"
Call Set "M=%%DateTime:~3,2%%"
Call Set "D=%%DateTime:~0,2%%"
Call Set "H=%%DateTime:~11,2%%"
Call Set "MIN=%%DateTime:~14,2%%"
Call Echo %%Y%%%%M%%%%D%%%%H%%%%MIN%% %%~f#
))>"%TEMP%\dirs.tmp"

For /F "tokens=1,*" %%A  in ('Type "%TEMP%\dirs.tmp" ^| SORT') Do (
Echo %%B
REM xcopy "%%B" ...
)

del "%TEMP%\dirs.tmp"



Pues muchas gracias.