Batch modifier une ligne

Résolu
marcothedwarf Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18788 Date d'inscription   Statut Contributeur Dernière intervention   -
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 18788 Date d'inscription   Statut Contributeur Dernière intervention   5 632
 
hello
on ne peut pas modifier directement un fichier en batch.
essayer avec ceci à la fin du batch
copy fichier2.txt fichier.txt
0