Vous disposez d'un dossier où les noms de plusieurs fichiers commencent par la même chaine.
Vous voulez remplacer cette chaîne par une autre pour tous les fichiers.
Cette fonction le fait très bien, sans problème pour un très grand nombre de fichiers.
Source / Exemple :
FUNCTION RenameFilePrefixes(cDir,cOld,cNew)
LOCAL cFileName, cRightPart
IF( DIRECTORY(cDir) .AND. !EMPTY(cOld) .AND. !EMPTY(cNew) .AND. cOld != cNew )
SET DEFAULT TO "&cDir"
cFileName = SYS(2000,cOld+"*.*")
DO WHILE( !EMPTY(cFileName) )
IF( LEN(cNew) > LEN(cOld) ) && Evite de boucler infiniment
DO WHILE( !EMPTY(cFileName) .AND. cNew = LEFT(cFileName,LEN(cNew)) )
cFileName = SYS(2000,cOld+"*.*",1) && Passage au fichier suivant
ENDDO
ENDIF
IF( !EMPTY(cFileName) )
cRightPart = SUBSTR(cFileName,LEN(cOld)+1) && Partie de droite à garder
RENAME "&cOld"+"&cRightPart" TO "&cNew"+"&cRightPart" && Remplacement du préfixe
cFileName = SYS(2000,cOld+"*.*") && Passage au fichier suivant
ENDIF
ENDDO
SET DEFAULT TO
RETURN .T.
ELSE
RETURN .F.
ENDIF
ENDFUNC
Conclusion :
La fonction renvoie .T. si tout s'est bien déroulé.