Boucle : je me m'en sors pas :(
Résolu
Ka-El
Messages postés
260
Date d'inscription
Statut
Membre
Dernière intervention
-
Ka-El Messages postés 260 Date d'inscription Statut Membre Dernière intervention -
Ka-El Messages postés 260 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- Boucle : je me m'en sors pas :(
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
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.
for /F "tokens=2 delims='" %c in ('affichage -i 1000306^|find "code"') do set diag=%c
D:\ka-el>echo %diag%
310
Pourquoi dans la boucle il l'affiche en 205 ?
Bizarre.... Bizarrre....
setlocal enableDelayedExpansion
au début du script¨, et remplacer % par !
if "!diag!" == "205" (
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 ! :-)