Changer les noms de fichiers avec accents
Publié : dim. 03/mai/2020 18:13
Une petite routine pour remplacer les caractères accentués par des caractères sans accent dans les noms des fichiers et dossiers.
Les fichiers et dossiers sont renommés (de façon récursive) avec des noms sans accents ni apostrophes.
procédure que j'ai dû faire pour utiliser les fonctions packer/zip qui créént des fichiers compressés aux noms bizarres si des accents s'y trouvent.
Et je n'ai pas trouvé de fonction interne pour y remédier.
Cela reste assez rapide, mais si vous avez une meilleure solution, n'hésitez pas
-> Si pour tester vous ne voulez pas renommer vos fichiers, commentez la fonction RenameFile()
Les fichiers et dossiers sont renommés (de façon récursive) avec des noms sans accents ni apostrophes.
procédure que j'ai dû faire pour utiliser les fonctions packer/zip qui créént des fichiers compressés aux noms bizarres si des accents s'y trouvent.
Et je n'ai pas trouvé de fonction interne pour y remédier.
Cela reste assez rapide, mais si vous avez une meilleure solution, n'hésitez pas
-> Si pour tester vous ne voulez pas renommer vos fichiers, commentez la fonction RenameFile()
Code : Tout sélectionner
Procedure.s ChangeFileNameToZip(FileNameToZip$)
; àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ
ChangeFileName$ = ReplaceString(FileNameToZip$, "à", "a", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "ç", "c", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "é", "e", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "è", "e", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "ê", "e", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "ë", "e", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "î", "i", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "ï", "i", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "ô", "o", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "ö", "o", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "ù", "u", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "ü", "u", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Â", "A", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ã", "A", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ç", "C", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "É", "E", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "È", "E", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ê", "E", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ë", "E", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Î", "I", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ï", "I", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ô", "O", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ö", "O", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ù", "U", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "Ü", "U", #PB_String_CaseSensitive, 1)
ChangeFileName$ = ReplaceString(ChangeFileName$, "'", " ", #PB_String_CaseSensitive, 1)
ProcedureReturn ChangeFileName$
EndProcedure
Procedure.s Directory_ChangeFileName(MyDir.s, IDdir.l=0)
If Right(MyDir, 1) <> "\"
MyDir + "\"
EndIf
If ExamineDirectory(IDdir, MyDir, "*.*")
While NextDirectoryEntry(IDdir)
If DirectoryEntryName(IDdir) <> "." And DirectoryEntryName(IDdir) <> ".."
MyFile.s = MyDir + DirectoryEntryName(IDdir)
Debug "Fichier initial : "+MyFile
MyNewFile.s = ChangeFileNameToZip(MyFile.s)
Debug "Nom Fichier modifié : "+MyNewFile
If RenameFile(MyFile.s, MyNewFile.s)<>0
Debug "Fichier renommé : "+MyNewFile
Debug "---"
EndIf
; rappel de la procédure à chaque dossier rencontré
If DirectoryEntryType(IDdir) = #PB_DirectoryEntry_Directory
Directory_ChangeFileName(MyDir + DirectoryEntryName(IDdir), IDdir + 1)
EndIf
EndIf
Wend
FinishDirectory(IDdir)
EndIf
EndProcedure
;-Test
Direct.s = PathRequester("Choisissez un répertoire", "")
If Direct
Directory_ChangeFileName(Direct)
EndIf