Renommer un .txt avec son contenu en batch
Mael730
Messages postés
50
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
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é!
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é!
Configuration: Windows XP Firefox 3.5.5
8 réponses
-
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; -
hello
j'arrive.
enlever le echo pour effectuer le renameC:> 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-
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?
-
-
Veux-tu le faire absolument en batch?
As-tu excel sous la main? -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
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?? -
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 -
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 ))))