Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Hyoga82 en 13 Junio 2013, 18:32 pm



Título: Ayuda script Batch copia de archivos
Publicado por: Hyoga82 en 13 Junio 2013, 18:32 pm
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:
Código:
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:
Código:
dir /OD


Un saludo y muchas gracias



Título: Re: Ayuda script Batch copia de archivos
Publicado por: Eleкtro en 13 Junio 2013, 18:59 pm
lo 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
  1. @Echo OFF
  2.  
  3. (for /D %%# in ("*") Do (
  4. Set "DateTime=%%~t#"
  5. Call Set "Y=%%DateTime:~6,4%%"
  6. Call Set "M=%%DateTime:~3,2%%"
  7. Call Set "D=%%DateTime:~0,2%%"
  8. Call Echo %%Y%%%%M%%%%D%% %%~f#
  9. ))>"%TEMP%\dirs.tmp"
  10.  
  11. For /F "tokens=1,*" %%A  in ('Type "%TEMP%\dirs.tmp" ^| SORT') Do (
  12. Echo %%B
  13. REM xcopy "%%B" ...
  14. )
  15.  
  16. Pause&Exit

Saludos!


Título: Re: Ayuda script Batch copia de archivos
Publicado por: Hyoga82 en 14 Junio 2013, 12:26 pm
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:

Código:
@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


Título: Re: Ayuda script Batch copia de archivos
Publicado por: Hyoga82 en 14 Junio 2013, 13:03 pm
Vale, no era tan dificil...
Código:
@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.