Bonjour à tous,

Je rencontre un problème dans le code ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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