Renommer un .txt avec son contenu en batch

Fermé
Mael730 Messages postés 49 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 février 2010 - 16 déc. 2009 à 12:50
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 - 16 déc. 2009 à 16:57
Bonjour,

Je suis novice en progra et j'aurai besoins d'un petit coup de main:

Jai un fichier *.txt qui contient ceci:

Date/Time:;16/12/2009;10:57:05;;;;;;;Version: V 1.600.386;
Operator:;;

Battery ID:;A_S1_1El;;;Source:;SAFT;;;Battery type:;Li-ion;
Nominal voltage:;4.00;V;;Nominal current:;6.50;A;;Nominal capacity:;6.50;Ah;
Program:;Sim_1elm;
Circuit:;Cyc_P4-1;
Test section:;TS000002;;;Comment:;Comment.;;;Start of test:;08/12/2008;15:37:19;;;End of test:;08/12/2008;16:34:09;

J'aimerai que le fichier soit renommer avec ces informations:
-la date (ici 2009)
-battery ID (ici A_S1_1El)
-source (ici SAFT)
-Battery type (ici Li-ion)
-Nominal capacity (ici 6.50)

ce qui donnerai :
2009_A_S1_1El_SAFT_Li-ion_6.50.txt

J'avais pensé faire un findstr mais comme ces informations changent d'un fichier à l'autre cela ne marchera pas donc je ne sais pas trop comment m'y prendre!

des idées??

Merci d'avance

P.S: batch obligé!

8 réponses

dvphamid Messages postés 15 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 12 mars 2010 1
16 déc. 2009 à 13:18
et pour cette chaine de caract il y a tjr le même nombre de " ; "
Battery ID:;A_S1_1El;;;Source:;SAFT;;;Battery type:;Li-ion;
1
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
16 déc. 2009 à 14:42
hello
j'arrive.
enlever le echo pour effectuer le rename
C:> type f1.txt
Date/Time:;16/12/2009;10:57:05;;;;;;;Version: V 1.600.386;
Operator:;;

Battery ID:;A_S1_1El;;;Source:;SAFT;;;Battery type:;Li-ion;
Nominal voltage:;4.00;V;;Nominal current:;6.50;A;;Nominal capacity:;6.50;Ah;
Program:;Sim_1elm;
Circuit:;Cyc_P4-1;
Test section:;TS000002;;;Comment:;Comment.;;;Start of test:;08/12/2008;15:37:19;;;End of test:;08/12
/2008;16:34:09;

C:> type aa.bat
@echo off

set FICHIER=f1.txt
for /f "delims=/; tokens=5" %%a in ('findstr "Date" %FICHIER%') do (
for /f "delims=; tokens=2,4,6" %%b in ('findstr "Battery" %FICHIER%') do (
for /f "delims=; tokens=8" %%e in ('findstr "Nominal capacity" %FICHIER%') do (
echo ren %FICHIER% %%a_%%b_%%c_%%d_%%e.txt
)))

C:> aa
ren f1.txt 2009_A_S1_1El_SAFT_Li-ion_6.50.txt
1
Mael730 Messages postés 49 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 février 2010 1
16 déc. 2009 à 16:20
Merci dubcek, j'ai un autre problème:

pour un autre fichier j'ai une variable avec un espace: %%b= A S1_1El
donc pour le echo tout va bien le nom du fichier s'affiche nikel mais par contre la fonction rename ne prend pas les espaces apparemment==>la syntaxe de la commande est incorrect.

tu as une astuce?
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
16 déc. 2009 à 13:06
Veux-tu le faire absolument en batch?

As-tu excel sous la main?
0
Mael730 Messages postés 49 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 février 2010 1
16 déc. 2009 à 13:07
Oui absolument en batch!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mael730 Messages postés 49 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 février 2010 1
16 déc. 2009 à 13:27
Oui il y a toujours le même nombre de ";"
0
Mael730 Messages postés 49 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 février 2010 1
16 déc. 2009 à 13:49
Je pense qu'il faut utiliser delims et token dans une boucle mais le problème c'est que les lignes sont toutes différentes!

dubcek t'es dans le coin??
0
Mael730 Messages postés 49 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 février 2010 1
16 déc. 2009 à 16:35
Tu peut me dire aussi ce qui ne vas pas la dessous? Il faudrait que le script balaye tout le dossier à la recherche de fichiers .txt et qu'il effectue l'opération sur tout ces fichiers:

@echo off

for /f "delims=" %%x in ('dir /b *.txt') do (

set FICHIER=%%x

for /f "delims=/; tokens=5" %%a in ('findstr "Date" %FICHIER%') do (
for /f "delims=; tokens=2,4,6" %%b in ('findstr "Battery" %FICHIER%') do (
for /f "delims=; tokens=8" %%e in ('findstr "Nominal capacity" %FICHIER%') do (

echo ren %%x %%a_%%b_%%c_%%d_%%e.txt

))))

merci d'avance
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
16 déc. 2009 à 16:57
ajouter setlocal enableDelayedExpansion et remplacer % par ! pour la variable FICHIER
@echo off

setlocal enableDelayedExpansion
for /f "delims=" %%x in ('dir /b *.txt') do (

set FICHIER=%%x

for /f "delims=/; tokens=5" %%a in ('findstr "Date" !FICHIER!') do (
for /f "delims=; tokens=2,4,6" %%b in ('findstr "Battery" !FICHIER!') do (
for /f "delims=; tokens=8" %%e in ('findstr "Nominal capacity" !FICHIER!') do (

echo ren !FICHIER! %%a_%%b_%%c_%%d_%%e.txt

)))) 
0