Renommer un .txt avec son contenu en batch [Fermé]

Signaler
Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
-
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

Messages postés
15
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
12 mars 2010
1
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 303
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
1
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?
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
264
Veux-tu le faire absolument en batch?

As-tu excel sous la main?
Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
1
Oui absolument en batch!
Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
1
Oui il y a toujours le même nombre de ";"
Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
1
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??
Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
1
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
Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 303
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

))))