begin process at 2008 07 25 01:55:37
1 216 040 membres
24 nouveaux aujourd'hui
14 179 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : RENAME avec wildcards [ Divers / Général ] (mike_vk)

RENAME avec wildcards le 02/01/2008 15:43:08

mike_vk

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

pYTh


Re : RENAME avec wildcards le 03/01/2008 11:55:25

mike_vk
Réponse acceptée !
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

         IF
( !EMPTY(cFileName) )
            cRightPart =
SUBSTR(cFileName,LEN(cOld)+1)
            RENAME "&cOld"+"&cRightPart" TO "&cNew"+"&cRightPart" && Renomme
            cFileName = SYS(2000,cOld+"*.*") && Fichier suivant
         ENDIF

      ENDDO
      SET DEFAULT TO
      RETURN
.T.
   ELSE
      RETURN
.F.
   ENDIF
ENDFUNC


Classé sous : fichiers, contenant, rename, prefixe, wildcards

Participer à cet échange

Pub



Appels d'offres

Creation portail video
Budget : 3 000€
Site de e-commerce
Budget : 5 000€
Demande de devis pour ...
Budget : 7 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS