BATCH : Boucle FOR qui ne boucle pas ?!
Bonjour à tous,
Je rencontre un problème dans le code ci-dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| :: Variable "liste" contenant les noms de processus à tuer
SET listeProcessus=Notepad RocketDock Toto
ECHO %listeProcessus%
:: On démarre deux Notepad, pour le test de la deuxième boucle FOR
Start /min Notepad
Start /min Notepad
:: Pour chaque nom de processus dans %listeProcess%; on liste les processus
:: portant ce nom. On récupére les lignes, exceptées les 3 premières (en-tête
:: du résultat de PSLIST), contenant ce nom de processus.
:: Le token 1 contient le nom du processus, le token 2 contient son PID.
:: Si le PID n'est pas renseigné, c'est qu'aucun processus de ce nom n'a été
:: trouvé : dans ce cas on ne fait rien, sinon on détruit le process.
FOR /F %%A IN ( 'ECHO %listeProcessus%' ) DO (
ECHO %%A
FOR /F "TOKENS=1,2 SKIP=3" %%O IN ( 'PSLIST -e %%A' ) DO (
ECHO %%O %%P
PSKILL -t %%P
)
)
:: Fin du script
:END |
Le problème est simple : la première boucle FOR ne boucle pas !!
Le premier ECHO montre que %listeProcessus% semble correcte, et pourtant...
Pour la deuxième, pas de problème (les deux process Notepad sont bien tués), mais après le deuxième PSKILL, la boucle se termine immédiatement : le ECHO %%A (qui devrait renvoyer "RocketDock") n'est pas exécuté.
Je suis sûr que le problème est très simple, mais je ne vois rien !?
Merci d'avance pour vos lumières !
EDIT : si besoin, la page à partir de laquelle télécharger PSKILL et PSLIST : http://www.sysinternals.com/ntw2k/fr.../pstools.shtml