Renommer le préfixe de tous les fichiers d'un dossier

Contenu du snippet

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é.

A voir également