CopyDiff([c:\Project folder],[d:\back up folder]) FUNCTION CopyDiff(lcSourceFolder, lcTargetFolder) LOCAL laFiles[1], lnFor, lnFiles, lbCopyFile LOCAL laFilesTrg[1], lnAscan, lnFilesTrg, lcNewExt LOCAL lcFileSource, lcFileTarget lcSourceFolder = ADDBS(lcSourceFolder) lcTargetFolder = ADDBS(lcTargetFolder) lnFiles = ADIR(laFiles, lcSourceFolder+[*.*]) ADIR(laFilesTrg,lcTargetFolder) FOR lnFor = 1 TO lnFiles IF NOT LEFT(laFiles[lnFor,1],2) == [.] IF [D] $ UPPER(laFiles[lnFor,5]) *** Folder copy it TRY md (lcTargetFolder+laFiles[lnFor,1]) CATCH ENDTRY CopyDiff(lcSourceFolder+laFiles[lnFor,1], lcTargetFolder+laFiles[lnFor,1]) ELSE lbCopyFile = .t. lcFileSource = lcSourceFolder+laFiles[lnFor,1] lcFileTarget = lcTargetFolder+laFiles[lnFor,1] IF lnFilesTrg # 0 *** If lnFilesTrg == 0 then there is *** NO files in that folder, so you don't have to care about EXT, all files will be copied there lnAscan = ASCAN(laFilesTrg,laFiles[lnFor,1],1,-1,1,1,11) IF lnAscan > 0 IF laFilesTrg[lnAscan,3] # laFiles[lnFor,3] OR; laFilesTrg[lnAscan,4] # laFiles[lnFor,4] IF JUSTEXT(laFiles[lnFor,1]) $ [VCX VCT SCX SCT FRX FRT DBF DBT] lcNewExt = LEFT(JUSTEXT(laFiles[lnFor,1]),2)+[*] lcFileSource = FORCEEXT(lcSourceFolder+laFiles[lnFor,1],lcNewExt) lcFileTarget = FORCEEXT(lcTargetFolder+laFiles[lnFor,1],lcNewExt) ENDIF ELSE lbCopyFile = .f. ENDIF ENDIF ENDIF IF lbCopyFile COPY FILE (lcFileSource) TO (lcFileTarget) ENDIF ENDIF ENDIF ENDFORnot tested at all. I wrote it directly here :-)