Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Résolu] Remplacement de ligne dans fichier txt
Auteur Message
Répondre en citant
Message [Résolu] Remplacement de ligne dans fichier txt 
Bonjour,

Je vous fait par de mon petit soucis ...
Pour commencer, voici mon batch :

Code:
(1)  @echo off
(2)
(3)  del fichier2.txt
(4)
(5)  Set Nom=
(6)  set /p Nom=Numero de nomenclature :
(7)
(8)  for /f "delims=" %%j in (c:\extarct\ComptageBF.txt) do (
(9)  set ligne=%%j
(10) if "%ligne%"=="Where=" set ligne=Where=(CODEP='%Nom%')
(11) echo %ligne% >> fichier2.txt
(12) )

EDIT DE REKACA(£`/@]): MERCI D'UTILISER LES BALISES CODE

Il est sensé lire chaque ligne du fichier ComptageBF, et la retranscrire tel quel dans fichier2.txt; sauf si cette ci commence par "Where=" au quel cas il remplace la ligne par Where=(CODEP='%Nom%')

J'ai identifié 2 problèmes :

1 - Jusqu'à la ligne (9) tout se passe bien, ensuite, en exécutant pas à pas dans powerbatch, je remarque que le test ligne (10) est retranscrit par : if ""=="where=" etc. ce qui signifie que ma variable %ligne%, qui marche bien ligne (9), est "perdue" ?? ligne (10)

2 - La condition ligne (10) se terminant par une parenthèse, cela est interprété comme la fin de ma boucle for, alors qu'elle ne doit se terminer que ligne (12), ce qui fait que la ligne (11) n'est exécutée qu'une fois...

Après peut etre qu'il y a plus simple pour faire la même chose....

Si une âme charitable veut bien éclairer ma lanterne...

Merci par avance,

Guillaume



Dernière édition par Guiyaum le Ven 17 Sep 2010 - 15:44; édité 1 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Re: Remplacement de ligne dans fichier txt 
Salut,

tu pourrais utiliser les balises de code la prochaine fois Mr. Green

ton probleme c'est qu'il faut utiliser l'expansion retarée de variable.

pour les caracteres spéciaux ( [ | & ~ @ ] ) il faut mettre ^ devant.

Mais je suis pas sur que l'on peut mettre un signe égal dans une chaine donc à ta place je ferai:
Code:

(1)  @echo off
(2)  SETLOCAL EnableDelayedExpansion
(3)  del fichier2.txt
(4)
(5)  Set Nom=
(6)  set /p Nom=Numero de nomenclature :
(7)
(8)  for /f "delims=" %%j in (c:\extarct\ComptageBF.txt) do (
(9)  set ligne=%%j
(10) if "!ligne!"=="Where=" ECHO Where=^(CODEP='!Nom!'^)>>fichier2.txt ELSE echo !ligne! >> fichier2.txt
(12) )





______________________________________________________
--
> Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.
-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

[Dos9]
Visiter le site web du posteur Skype
Répondre en citant
Message [Résolu] Remplacement de ligne dans fichier txt 
Bonjour !

Embarassed oui, j'avais zappé les balises de code, ce sera pour la prochaine fois ...

Et Merci Darkbatcher, l'expansion retardée de variable était bien ce qu'il me manquait...

Par contre, pourquoi ça ne marche pas en écrivant les variables %variable% mais c'est bon quand on écrit !variable! ?? ... lapin compris.

Sinon, c'est bon mon batch est fonctionnel ...

Merci !!



Répondre en citant
Message [Résolu] Remplacement de ligne dans fichier txt 
Ravi de t'avoir aidé Mr. Green

Pour ce que ça interresse l'expansion retardée de variable remplace !variable! Par sa valeur lors de chaque exécution de la ligne, alors que %variable% est remplacée une seule fois à la lecture de la ligne.

En gros dans une boucle for, %ligne% sera remplacé par la valeur de %ligne% avant la lecture donc si %ligne% est égale à 3 au début %ligne% sera remplacer par 3 dans la boucle c'est pour ça que si tu fais echo %ligne% sa affiche toujour la meme chose Very Happy




______________________________________________________
--
> Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.
-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

[Dos9]
Visiter le site web du posteur Skype
Message [Résolu] Remplacement de ligne dans fichier txt 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch