Boucle : je me m'en sors pas :(
Résolu
Ka-El
Messages postés
279
Statut
Membre
-
Ka-El Messages postés 279 Statut Membre -
Ka-El Messages postés 279 Statut Membre -
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
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
-
hello
vérifier le code retourné là :...... do (set diag=%c& echo diag=%diag% )
-
je viens de faire un nouveau test en suivant ton conseil dubcek et je constate qu'au moment où le code n'est pas égal à 205, et bien le script ne fait rien et surtout voit le code comme si il était à 205 ! :
D:\ka-el>(
for /F "tokens=2 delims='" %c in ('affichage -i 1000306|find "code"') do (set diag=%c & echo diag=205 )
if "205" == "205" (echo notok ) else (echo 1000306 1>>tata.txt )
)
Je redonne ma boucle pour davantage de compréhension :
for /f "tokens=1" %b in ('type D:\ka-el\toto.txt') do (
for /F "tokens=2 delims='" %c in ('affichage -i %b^|find "code"') do (set diag=%c& echo diag=%diag% )
if "%diag%" == "205" (
echo notok
) else (
echo %b >> fred.txt
)
)
Merci pour votre aide. -
-
-
J'ai saisi les commandes suivantes :
for /f "tokens=1" %b in ('type D:\ka-el\toto.txt') do (
setlocal enableDelayedExpansion
More? for /F "tokens=2 delims='" %c in ('affichage -i %b^|find "code"') do set diag=%c
More? if "!diag!" == "205" (
More? echo notok
More? ) else (
More? echo %b >> tata.txt
More? )
More? )
Mais une partie du résultat donne ceci :
D:\ka-el>(
for /F "tokens=2 delims='" %c in ('affichage -i 1022023|find "code"') do set diag=%c
if "!diag!" == "205" (echo notok ) else (echo 1022023 1>>tata.txt )
)
D:\ka-el>set diag=205
Manifestement il n'arrive pas à traduire "!diag!" et c'est donc la redirection vers le fichier tata.txt qui est systématiquement prise en compte.
Dur, dur ! :-) -
-