Aide pour script de renommage

  • Auteur de la discussion lobo2121
  • Date de début

lobo2121

Nouveau membre
Bonjour,
Je suis un novice en script DOS. Pourriez-vous m'aider à réaliser un scrip qui permet de renommmer
le fichier IMAGES_BPHR_100309_15001410_VCI0.DAT en IMAGES-BPHR-20100309-15001410-VCI0.DAT (en clair, on remplace les _ par des - et on rajoute le nombre 20 pour avoir l'année sur 4 caractères).
A savoir que les champs 100309_15001410_VCI0 sont variables.
Merci de votre aide.

Lobo21
 

zeb

Modérateur
Ben non. DOS est trop archaïque et a été pensé par quelqu'un de trop étroit d'esprit pour que ce soit faisable.

En revanche, sous UNIX, c'est trop facile :D Un ptit coup de sed et c'est tout.
[:zeb:3]

--------------------------------------

Ben si je t'en parle, c'est parce qu'il est possible, grâce au modèle ouvert de Linux, d'avoir sous DOS, le meilleur du libre. Va donc chercher sed sur http://gnuwin32.sourceforge.net/

Ensuite, pour transformer ton nom de fichier, je te propose cette regex : "s/_/-/g;s/[0-9]\{6\}/20&/"


( plize ouète )
 

zeb

Modérateur
( rilaud )

Bon, alors l'affectation du résultat d'une commande en DOS, c'est du grand n'importe quoi. On va passer par un FOR /F :pfff:

Code:
FOR /F %N IN ( ' ECHO %FICHIER% ^| sed "s/_/-/g;s/[0-9]\{6\}/20&/" ' ) DO RENAME %FICHIER% %N
Pour que ça marche, il faut bien sûr que la variable %FICHIER% contienne un nom de fichier valide.

Allez, soyons fou. Comment renommer tout un répertoire plein de fichiers IMAGES_BPHR_<champs_variables>.DAT ?

Ben comme ça :
Code:
FOR %I in ( IMAGES_BPHR*.DAT ) DO (
  FOR /F %N IN ( ' ECHO %I ^| sed "s/_/-/g;s/[0-9]\{6\}/20&/" ' ) DO RENAME %I %N
)

Cette commande fonctionne directement. Pour la mettre dans un fichier batch (.BAT ou .CMD), il faut remplacer les %X par des %%X, c'est comme ça :pfff:

[:nicky95] [:zeb:7]​
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 070
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut