Automatisation "renomer un fichier" - intercaler 2 caractères

Salut à tous.

J’ai un trés grand nombre de fichiers dont le nom ont cette forme:
xxx_xxx xx.set
xxxx_xx xxxx.set

Je doit intercaler 2 caracteres juste apres le "" de chaque nom ,toujours le meme, “^5”, ce qui donnera:
xxx
^5xxx xx.set
xxxx_^5xx xxxx.set

J’ai fais le tour de quelques applis de renomage de fichiers, dont certain sont trés bien fait, hélas, je n’ai pas trouver cet fonctionalité.

Je suppose que quelques lignes de code en VB ou autre language devrait suffire pour traiter quelques chaines de caracteres automatiquement.

Si quelqu’un parmis vous pouvait “m’inventer” ce petit bout code, j’en lui serait reconnaissant. :ange:

un petit preg_replace + diropen en php devrait faire l’affaire. Suffit de bien formaliser tes noms de fichier.

Thx pour ta réponse, mais je capte Z à ce que tu racontes, désolé!.
(j’en suis rester au BASIC des années 80 ou ou aux macros office …)

j’ai commencé à la faire la mano, mais ça va va etre long, long, looooong …

“Suffit de bien formaliser tes noms de fichier” —> ce n’est pas moi qui ai crées les noms de fichiers originels.
il faut juste rajouter ^5 devant un “_” dans un nom de fichier.

si un adepte du code se sent … :jap:

Tu fais du visual ?

Je connais pas le langage mais dans l’idée c’est :(avec Mid, left, Right c’est ça?)

Pour chaque fichier f dans dossier X
  i = Position(f, _);
  Si i != 0 Alors // 0 car les chaînes commencent à 1 en VB je crois, sinon -1, voir doc :)
    f2 = Left(f, i) // sous chaine à gauche du caractère i
           & '^5' 
           Right(f, i+1) // sous chaîne à droite du caractère i
    fs.rename(f, f2);
  FinSi
FinPour;

L’idée est là. Surtout en qu’en visual le FileSystemObject (c’est son nom je crois) te permettra de récupérer une liste de fichiers, etc.

un petit UP, parce que à la main, fichier par fichier …
Non, je ne pratique plus de language, d’ou mon post
(pourtant ,j’en ai produit des milliers de lignes de code, mais il y a fort longtemp)

Pour plus de comprension:
Mon dossier contient des fichiers comme suit,
FXO GTR_fe1r_Flotc626.set
FXO GTR_fe4r_flotc816.set
FZ50_as2r_Carlo757.set

A transformer comme suit:
FXO GTR_^5fe1r_Flotc626.set
FXO GTR_^5fe4r_flotc816.set
FZ50_^5as2r_Carlo757.set

Salut,

Sous GNU/Linux il existe un éditeur de flux nommé "sed" qui fait ça très bien :

[jp@Mandrake tmpfs]$ cat fich.txt

FXO GTR_fe1r_Flotc626.set
FXO GTR_fe4r_flotc816.set
FZ50_as2r_Carlo757.set

[jp@Mandrake tmpfs]$ cat fich.txt | sed 's/_/_\^5/'

FXO GTR_^5fe1r_Flotc626.set
FXO GTR_^5fe4r_flotc816.set
FZ50_^5as2r_Carlo757.set

Il a été porté sous Windows : Editeur Sed pour Windows

L’exemple cité ci-dessus ne modifie en fait le fichier que sur la sortie standard, à savoir l’écran. Pour une modification permanente sur le fichier il suffit de rajouter l’option “-i” à la commande oruginale :

cat fich.txt | sed -i 's/_/_\^5/'

:wink:

Merci mille fois pour le lien et la ligne de code.

Alors fin de compte , après avoir experimenter sans succès "sed"
je me suis tourné vers "the rename"

http://www.herve-thouzard.com/modules/wfse…?articleid=2#t4
Particulierement efficasse et gratuit

—> remplacer la premiere occurence "" par "^5" dans le préfixe de chaque fichier du dossier.