Batch modifier une ligne

Résolu/Fermé
marcothedwarf Messages postés 258 Date d'inscription samedi 25 septembre 2010 Statut Membre Dernière intervention 11 novembre 2021 - Modifié par marcothedwarf le 19/10/2011 à 03:16
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 - 19 oct. 2011 à 07:53
Bonjour,


j'ai un petit soucis avec un batch.

J'ai un fichier.txt composé ainsi :

aaa  
bbb  
...  
modification=  
0  
...  
yyy  
zzz


et voici mon batch :

for /f "tokens=1 delims=:" %%i in ('type fichier.txt ^|findstr /n /c:"modification="') do set vrNumbLigneModif=%%i& set /a vrNumbLigneModif+=1  

for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . fichier.txt') do set vrNumbLigne=%%i& set vrLign=%%j& call :trait  

goto fin  

:trait  

if "%vrNumbLigne%"=="%vrNumbLigneModif%" set   

vrLign=%vrLign:%azerty%  

echo %vrLign% >> fichier2.txt  
 

:fin



Cela modifie la valeur sous le "modification=" et la remplace par "azerty".

Tous marche pour le mieux lorsque "j'exporte" le résultat dans un fichier2.txt, mais je voudrais que cela aille directement dans le fichier.txt.
Mais lorsque je remplace fichier.txt pr fichier2.txt dans l'avant-dernière ligne, cela ajoute le résultat après ce qu'il y avait au départ...

par exemple :

aaa  
modification=  
0  
bbb  
aaa  
modification=  
azerty  
bbb


et moi je veux bien :

aaa  
modification=  
azerty  
bbb




Quelqu'un pourrait-il m'aider ?
Merci.

MarcoTheDwarf

Ps : j'ai essayé de del fichier.txt puis ren fichier2.txt fichier.txt mais cela fonctionne très mal, et je préfère modifier le code plutôt que de faire des manipulation hasardeuses.
A voir également:

1 réponse

dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
Modifié par dubcek le 19/10/2011 à 07:53
hello
on ne peut pas modifier directement un fichier en batch.
essayer avec ceci à la fin du batch
copy fichier2.txt fichier.txt
0