mike_vk
Messages postés30Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention13 septembre 2013
-
2 janv. 2008 à 15:43
mike_vk
Messages postés30Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention13 septembre 2013
-
3 janv. 2008 à 11:55
Bonjour,
J'ai un petit problème avec la commande RENAME. Peut-etre que j'utilise pas bien les wildcards?
Je dispose d'un dossier contenant une série de fichiers ayant tous comme nom :
prefixe_nomfichier.ext
où prefixe est identique pour tous les fichiers.
J'essaie de modifier ce préfixe avec RENAME, pour tous les fichiers en une fois,
comme ceci par exemple :
RENAME "prefixe*.*" TO "prefix2*.*"
Tout va bien quand les deux prefixes ont la même longueur. Mais quand le nouveau est un caractère plus long que l'ancien, il écrase l'underscore. Si le nouveau est plus court, il laisse des caractères de l'ancien!
Introduire le _ dans la variable contenant le préfixe ou même dans le masque du RENAME, ne change rien.
Quelqu'un aurait-il une idée ? J'espère m'être bien exprimé,
Merci beaucoup
mike_vk
Messages postés30Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention13 septembre 2013 3 janv. 2008 à 11:55
Ne trouvant pas de solution à ce problème, et ayant vu que pas mal de monde s'est retrouvé face à la même impasse, j'ai codé une petite fonction qui modifie le préfixe de tous les fichiers d'un dossier.
Voici le code, les commentaires et améliorations sont les bienvenues!
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) ) && Empeche les boucles infinies quand le
DO WHILE( !EMPTY(cFileName) .AND. ; && nouveau préfixe commence
cNew = LEFT(cFileName,LEN(cNew)) ) && par l'ancien
cFileName = SYS(2000,cOld+"*.*",1)
ENDDO
ENDIF