Bucle FOR para copiar archivos[Solucionado]

Iniciado por jsgc15, 14 Julio 2010, 20:26 PM

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

jsgc15

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:

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:
cd "C:\Documents and Settings\netlogistik\Desktop\entrada"
for /f %%file IN ('dir RA_*.dat') do(copy %%file ..\salida)

leogtz

Advertido. Usa las etiquetas de código o tus próximos mensajes los borraré.

Respecto al tema, esto debería servir:

Código (dos) [Seleccionar]
for /f "tokens=*" %%_ in ('dir /b ra_*.dat') do (
if exist "%%~n_.trg" (
copy "%%_" ..\salida
copy "%%~n_.trg" ..\salida
)
)


Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

jsgc15

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:
@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))