Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: jsgc15 en 14 Julio 2010, 20:26 pm



Título: Bucle FOR para copiar archivos[Solucionado]
Publicado por: jsgc15 en 14 Julio 2010, 20:26 pm
Hola a todos, ojalá alguien me pueda ayudar. La intención es que por cada archivo .dat que encuentre el dir  RA_*.dat,   verificar que exista otro archivo con el mismo nombre, pero con la extensión .trg. Si se cumple esta condición mover o copiar estos dos archivos a otra carpeta. Más o menos el pseudocódigo sería asi:

Código:
cd "C:\Documents and Settings\jsgc\Desktop\entrada"
for /f %%file IN ('dir RA_*.dat')|extraer sólo el nombre sin la extensión y asignarlo a la variable file

do(if exist %%file.trg
copy %%file.dat ..\salida
copy %%file.trg ..\salida
sleep -s 15) // quiero que se espere 15 segundos antes de volver a copiar el siguiente par.


Probando, nisiquiera me funciona esto:
Código:
cd "C:\Documents and Settings\netlogistik\Desktop\entrada"
for /f %%file IN ('dir RA_*.dat') do(copy %%file ..\salida)


Título: Re: Bucle FOR para copiar archivos
Publicado por: leogtz en 14 Julio 2010, 22:24 pm
Advertido. Usa las etiquetas de código o tus próximos mensajes los borraré.

Respecto al tema, esto debería servir:

Código
  1. for /f "tokens=*" %%_ in ('dir /b ra_*.dat') do (
  2. if exist "%%~n_.trg" (
  3. copy "%%_" ..\salida
  4. copy "%%~n_.trg" ..\salida
  5. )
  6. )

Saludos.


Título: Re: Bucle FOR para copiar archivos
Publicado por: jsgc15 en 15 Julio 2010, 18:05 pm
Antes que otra cosa, una disculpa por lo del código. No estoy seguro cómo hacerlo pero intentaré con el botoncito  insertar código.
Muchísimas gracias por la ayuda. Al final ya sólo le he agregado un ping para emular el sleep que necesitaba y ya ha funcionado correctamente:
Código:
@echo off
cd "C:\entrada"

for /f "tokens=*" %%_ in ('dir /b sortorder N RA_*.dat')  do (
if exist %%~n_.trg (copy "%%_" ..\salida
                    copy "%%~n_.trg" ..\salida
                    PING 1.1.1.1 -n 1 -w 15000 >NUL))