Antes de complicarte, por que no usas el COPY FILE que trae el mismo vfp.
Para mover, haces un COPY FILE y luego un DELETE FILE del archivo de origen
Para usar las funciones que mencionaba, es un algoritmo muy simple (depende de tu nivel de programacion)
Basicamente, consiste en abrir el archivo a copiar con FOPEN, este devuelve un manipulador (handler) del archivo que es parametro en las subsiguientes sentencias FREAD (en cada pasada, podes leer hasta 65000 bytes), este bloque de datos, luego lo escribis en un archivo que creas con FCREATE, que devuelve otro manipulador que usas con sentencias FWRITE.
O sea, debes escribir un simple bucle
liLeo = FOPEN( lcArchivoOrigen, 0 ) && abre en modo buffer, solo lectura, un poco mas veloz.
liEscribo = FCREATE( lcArchivoDestino, 0 )
FSEEK( liLeo, 0, 0) && aseguro estar al principio
DO WHILE NOT FEOF( liLeo )
lcDatos = FREAD( liLeo, 65535 ) && lee un bloque de 65kb o hasta fin de archivo
FWRITE( liEscribo, lcDatos ) && Escribe en el destino
NOTE FFlush es opcional, es mas cuestion de gusto, al igual, si fuerza o no la salida al disco.
FFLUSH( liEscribo, .F. ) && esl segundo parámetro en falso, puede ser mejor si el disco esta cargado )
ENDDO
Esto tenes que probarlo y ver que tan rapido te funciona, compara con copy file u otras opciones, lo que si, es que puedes intercarlar entre cualquiera de las lineas de codigo mensajes al usuario, analisis de datos entrados, tene en cuenta que lcDatos, es esencialmente una variable de caracteres, y por lo tanto puede ser medida (len), o cualquier cosa que quieras hacer con esa cadena
Saludos: Miguel