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)
Advertido. Usa las etiquetas de código o tus próximos mensajes los borraré.
Respecto al tema, esto debería servir:
for /f "tokens=*" %%_ in ('dir /b ra_*.dat') do (
if exist "%%~n_.trg" (
copy "%%_" ..\salida
copy "%%~n_.trg" ..\salida
)
)
Saludos.
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))