Renommage de fichier avec le contenu de la 1ère ligne

Renommage de fichier avec le contenu de la 1ère ligne - Shell/Batch - Programmation

Marsh Posté le 20-02-2013 à 23:06:30    

Bonsoir,
 
Un peu nullos dans le monde des fichiers .bat ,je demande votre aide...
 
J'ai une multitude de fichier lisible sous txt sous la forme "3748gh54957.m05.n01"
 
Mon souhait serait céer un fichier batch pour renommer chaque fichier avec le contenu de la première ligne de ce fichier tout en changeant l'extension en .txt
 
J'ai parcouru google en long et en large ,mais malheureusement je ne dois pas rechercher avec les bons mots clés.
 
 
Merci d'avance pour votre aide.
 
Cordialement,

Reply

Marsh Posté le 20-02-2013 à 23:06:30   

Reply

Marsh Posté le 21-02-2013 à 08:15:52    

Salut

Citation :


J'ai une multitude de fichier lisible sous txt sous la forme "3748gh54957.m05.n01"


 
tous ces fichiers ont une extension ".n01" ?

Reply

Marsh Posté le 22-02-2013 à 08:25:22    

Bonjour, hélas non ,ils prennent l'extension n01,n02,n03 etc...
 
Salutations

Reply

Marsh Posté le 22-02-2013 à 20:14:50    

Bonsoir,
 
Visiblement ce ne doit pas être facile à faire ,voir impossible...
 
J'ai vraiment pa

Reply

Marsh Posté le 23-02-2013 à 10:07:13    

Essaye en faisant une copie préalable de tous tes fichiers, histoire de pas tout foirer :D

 

Tu met les fichiers dans le répertoire, disons, TEST
Tu crée un fichier MassRename.bat avec ce contenu :

 
Code :
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /r %%i in (\%1\*) do (
  4. set first=1
  5. for /f "delims=" %%a in (%%i) do (
  6.  if !first!==1 rename %%i %%a.txt
  7.  set first=0
  8. )
  9. )
 

que tu enregistre dans le répertoire un niveau au dessus, tu devrais donc avoir ceci en structure de répertoire :

 

.
..
TEST
MassRename.bat

 

tu apelle MassRename TEST dans une invite ms-dos.
J'ai testé sur 2,3 fichiers, ça semble marcher. Par contre ça le fait pour tous les fichiers du répertoire, donc attation hin !


Message édité par pvclunacy le 23-02-2013 à 10:07:43
Reply

Marsh Posté le 24-02-2013 à 15:36:49    

Salut pvclunacy,
 
Un grand merci ,ça marche au top !
Y at'il un site ou l'on peu avoir des descriptions sur le language ?
Je suppose que l'on peut faire plein de truc avec les boucles for (pour ne citer que celui ci).
J'ai une petite base en vba ,mais là le script je trouve ça brut et puissant... comme j'aime.
 
Encore merci.
 
MF

Reply

Marsh Posté le 25-02-2013 à 19:46:17    

Bonjour,
 
Me revoilà sur ce topic car en réalité cela ne fonctionne pas comme je le souhaite !
Le résultat final est bon ,le nom du fichier est bien celui de la valeur de la première ligne.
Le hic resulte sur la boucle for qui passe en revue toutes les lignes du fichier...
Etant donné que ce batch doit fonctionner sur un PC peut puissant l'opération est assez longue même pour 5 fichiers.
Les fichiers textes font environs 25 à 40ko chacuns mais environs 2500 à 4000 lignes !!!
 
J'ai fait des test en modifiant des valeurs dans la formule mais sans succès...
 
Si on peut m'aider pour finaliser le truc...
 
Merci
 
Cordialement
 
MF  

Reply

Marsh Posté le 25-02-2013 à 22:53:51    

Essaye avec ça alors
 
(meme principe qu'avant, tu passe le répertoire de travail en paramètre)
 

Code :
  1. @echo off
  2. for /r %%a in (\%1\*) do call :process "%%a"
  3. goto :eof
  4. :process
  5. for /f "usebackq delims=" %%a in (%1) do rename %1 %%a.txt&goto :eof


 
Pour les sites, tu peux jeter un oeil à ceux ci qui me semblent pas mal : batcher.fr, ss64.com, dostips.com

Reply

Marsh Posté le 02-03-2013 à 08:42:01    

Bonjour,
 
Merci pvclunacy ,ça marche au top. :bounce:  
 
 
Bonne journée !
 
MF07

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed