Boucle : je me m'en sors pas :(

[Résolu/Fermé]
Signaler
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
-
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
-
Bonjour,
Je tente de faire une boucle qui me parait relativement simple, mais pourtant je ne parviens pas à obtenir le résultat attendu.
Voici ma problématique :
Je possède un fichier toto.txt dont le contenu est le suivant :
993090
993091
993092
993093
993094
993095
993096
993097
993098
993100
993103

Ces chiffres correspondent à des processus qui possèdent un code caché.
je dois faire le tri de ces chiffres selon le code qui est caché.
Voici comment je procède (je vais simplifier) :

@REM je lance ma boucle en prenant appui sur le fichier toto.txt :
for /f "tokens=1" %b in ('type D:\ka-el\toto.txt') do (
@REM La commande suivante permet de récupérer et de variabiliser le code caché
for /F "tokens=2 delims='" %c in ('affichage -i %b^|find "code"') do set diag=%c
@REM Si le code est égal à 205 je dois poursuivre ma boucle sans rien faire :
if "%diag%" == "205" (
goto :end
) else (
@REM Si le paramètre %diag% est différent de 205 alors je dois noter le chiffre du processus dans un fichier tata.txt
echo %b >> tata.txt
)
:end
)
Je n'arrive pas du tout à faire focntionner cette boucle. Je désespère, car je suis sur que c'est simple, mais impossible d'obtenir un résultat concluant.
Auriez-vous svp une solution à me proposer ?
Merci beaucoup.
K

1 réponse

Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
hello
vérifier le code retourné là :
...... do (set diag=%c& echo diag=%diag% ) 
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020

C'est idem en .bat
Voici mon code :

for /f "tokens=1" %%b in ('type D:\ka-el\toto.txt') do (
setlocal enabledelayedexpansion
for /F "tokens=2 delims='" %%c in ('affichage -i %%b^|find "code"') do set diag=%%c
if !diag! == "205" (
echo notok
) else (
echo %%b >> tata.txt
)



C'est un truc de fou !!!! Pourtant c'est pas censé être compliqué comme boucle non ?
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020

Aaaarg ! ça y est ça marche !!!!! :)
Il suffisait d'ajouter les guillemets à "!diag!"

Pfuuuu ! Je commençait à desespérer !
Encore une fois, merci beaucoup pour ton aide précieuse Debcek !!!
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020

Sans déc, je ne sais pas ce que je ferais san toi !!!
merci encore.
A bientôt et bon week-end
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
== teste les chaines et EQU les nombres
if  "!diag!" == "205" 
ou
if !diag! EQU 205
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020

Ok merci c'est noté :)