Comment récupérer le résultat d'une commande DOS dans une variable

Résolu
controlleur Messages postés 65 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 16 avril 2013 - 15 févr. 2012 à 15:29
controlleur Messages postés 65 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 16 avril 2013 - 11 avril 2012 à 17:17
Bonjour

je viens d'arriver a exécute une commande Dos ( Tasklist) à partir du Java , mon but suivant et de récupérer une donner spécifique qui est le PID d'un processus dont on connais le nom :
* comme vous voyez dans le résultats afficher je voudrai juste récupérer le PID d'un process et de le stocker dans une variable .
Merci d'avance

Here is the standard output of the command:

result:84:
Nom de l'image PID Nom de la sessio Num‚ro de s Utilisation
======================= ======== ================ =========== ============
System Idle Process 0 Services 0 24 Ko
System 4 Services 0 192 Ko
smss.exe 316 Services 0 52 Ko
csrss.exe 460 Services 0 628 Ko
csrss.exe 516 Console 1 10ÿ424 Ko
wininit.exe 524 Services 0 60 Ko
winlogon.exe 572 Console 1 56 Ko
services.exe 620 Services 0 3ÿ208 Ko
lsass.exe 628 Services 0 2ÿ740 Ko
lsm.exe 636 Services 0 904 Ko
svchost.exe 736 Services 0 1ÿ956 Ko
svchost.exe 812 Services 0 2ÿ624 Ko
svchost.exe 900 Services 0 5ÿ260 Ko
svchost.exe 940 Services 0 34ÿ112 Ko
svchost.exe 968 Services 0 9ÿ628 Ko
svchost.exe 1100 Services 0 2ÿ064 Ko
svchost.exe 1208 Services 0 4ÿ192 Ko
spoolsv.exe 1432 Services 0 1ÿ052 Ko
svchost.exe 1472 Services 0 4ÿ564 Ko
svchost.exe 1584 Services 0 2ÿ816 Ko
RIconMan.exe 1616 Services 0 260 Ko
lkads.exe 1660 Services 0 512 Ko
LMIGuardianSvc.exe 1700 Services 0 164 Ko
ramaint.exe 1744 Services 0 484 Ko
LogMeIn.exe 1804 Services 0 3ÿ204 Ko
nimxs.exe 1872 Services 0 344 Ko
nidmsrv.exe 1892 Services 0 492 Ko
SystemWebServer.exe 1948 Services 0 1ÿ108 Ko
tagsrv.exe 2020 Services 0 868 Ko
sftvsa.exe 2088 Services 0 52 Ko
WLIDSVC.EXE 2268 Services 0 312 Ko
lkcitdl.exe 2340 Services 0 484 Ko
lktsrv.exe 2428 Services 0 616 Ko
sftlist.exe 2504 Services 0 580 Ko
WLIDSVCM.EXE 2696 Services 0 48 Ko
ApplicationWebServer.exe 3040 Services 0 1ÿ848 Ko
nimdnsResponder.exe 3084 Services 0 472 Ko
nipxism.exe 3140 Services 0 496 Ko
nipalsm.exe 3296 Services 0 520 Ko
niDiscSvc.exe 3320 Services 0 52 Ko
CVHSVC.EXE 3760 Services 0 56 Ko
taskhost.exe 4012 Console 1 1ÿ148 Ko
dwm.exe 4080 Console 1 1ÿ532 Ko
explorer.exe 2188 Console 1 12ÿ216 Ko
svchost.exe 1300 Services 0 688 Ko
RtHDVCpl.exe 2968 Console 1 160 Ko
igfxtray.exe 3008 Console 1 144 Ko
hkcmd.exe 3048 Console 1 104 Ko
igfxpers.exe 3152 Console 1 168 Ko
LogMeInSystray.exe 3220 Console 1 2ÿ216 Ko
nidevmon.exe 3264 Console 1 148 Ko
jusched.exe 3364 Console 1 52 Ko
Linkury.exe 3716 Console 1 23ÿ048 Ko
nierserver.exe 3848 Console 1 108 Ko
igfxsrvc.exe 2224 Console 1 484 Ko
SearchIndexer.exe 4504 Services 0 15ÿ324 Ko
wmpnetwk.exe 4680 Services 0 1ÿ876 Ko
IAStorDataMgrSvc.exe 3940 Services 0 1ÿ324 Ko
svchost.exe 4404 Services 0 7ÿ072 Ko
chrome.exe 2788 Console 1 41ÿ596 Ko
chrome.exe 2300 Console 1 6ÿ920 Ko
chrome.exe 4524 Console 1 124 Ko
chrome.exe 3636 Console 1 1ÿ404 Ko
taskhost.exe 4412 Console 1 100 Ko
rundll32.exe 4176 Console 1 668 Ko
chrome.exe 3532 Console 1 20ÿ636 Ko
chrome.exe 5852 Console 1 476 Ko
taskmgr.exe 4352 Console 1 52 Ko
eclipse.exe 700 Console 1 161ÿ084 Ko
chrome.exe 5704 Console 1 118ÿ504 Ko
chrome.exe 4332 Console 1 29ÿ992 Ko
chrome.exe 1864 Console 1 107ÿ720 Ko
AcroRd32.exe 3744 Console 1 1ÿ852 Ko
chrome.exe 3824 Console 1 17ÿ396 Ko
notepad++.exe 5532 Console 1 1ÿ812 Ko
SearchProtocolHost.exe 5608 Services 0 4ÿ836 Ko
SearchFilterHost.exe 1488 Services 0 3ÿ796 Ko
javaw.exe 2144 Console 1 11ÿ236 Ko
tasklist.exe 4856 Console 1 4ÿ448 Ko
conhost.exe 3908 Console 1 2ÿ724 Ko
WmiPrvSE.exe 4664 Services 0 4ÿ980 Ko

30 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 févr. 2012 à 10:28
Il ne te restes qu'à initialiser liste des processus (que j'ai appelé lignes dans mon code) et ca fonctionnera
0
controlleur Messages postés 65 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 16 avril 2013
16 févr. 2012 à 10:48
Merci pour ton aide julien ,je suis très reconnaissant
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 févr. 2012 à 13:51
Il y a une solution qui peut te simplifier un peu l'a vie, je n'y avait pas pensé mais dans les options de TASKLIST, tu peux préciser des filtres avec /fi. Pour récupérer uniquement le bon processus, tu peux envoyer la commande suivante :

Z:\>tasklist /fi "Imagename eq System"

Nom de l'image              PID  Nom de la sessio Numéro d Utilisation
======================= ====== ================ ======== ============
System                         4 Console                 0        44 Ko
0
controlleur Messages postés 65 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 16 avril 2013
11 avril 2012 à 12:31
Bonjour Julien

SVP si tu te rappel tu ma aider pour récupérer le PID d'un Processus à partir de son nom , le problème c'est que : ceci marche très bien
pour des nom de processus qui ne contient pas de chiffres , mais dés que je veut récupérer le PID d'un processus dont le nom contient des chiffres
mon programmes bug :s: :s

voici le paTTerns utilisé : String patternStr2="[^0-9]*([0-9]*).*";


SVP comment changer le patternStr2 pour qu'il regarde si le nom de processus contient un chiffre ou pas ??

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
11 avril 2012 à 14:19
Bonjour,

Dans ce cas, c'est impossible. Par contre, tu peux toujours faire des substring pour récupérer les informations qui t'intéressent. en effet, le résultat est présenté sous la forme d'un tableau dans lequel chaque case a une longueur constante.

Utilises ensuite un .trim() pour enlever les espaces à la fin de la chaine et tu t'en sortiras.
0
controlleur Messages postés 65 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 16 avril 2013
11 avril 2012 à 14:55
Bonjour julien

j'ai exécute cette commande :

String name="firefox.exe";
String cmd= "tasklist /fi "IMAGENAME eq "+ name + "";

il m'a retourné directement ça :

Nom de l'image PID Nom de la sessio Num‚ro de s Utilisation
======================= ======== ================ =========== ============
firefox.exe 2980 Console 1 69ÿ240 Ko

maintenant pour récupérer le PID je stock cette chaîne dans tableau? ou tu propose je fait comment ?

Merci
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
11 avril 2012 à 15:05
Peux tu afficher le résultat dans une balise code=autre la prochaine fois pour que les espaces ne soient pas coupés.

Il faut que tu modifies le fonctionnement de ton programme. Pour créer ton tableau, tu prends entre les caractères 0 et ?? pour le nom du processus, entre ?? et ??2 pour le PID avec à chaque fois un substring.
0
controlleur Messages postés 65 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 16 avril 2013
11 avril 2012 à 15:13
Nom de l'image                 PID Nom de la sessio Num‚ro de s Utilisation 
======================= ======== ================ =========== ============
firefox.exe                   2980 Console                    1    69ÿ616 Ko


voila le résultat de ma commande
0
controlleur Messages postés 65 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 16 avril 2013
11 avril 2012 à 15:42
Bonjour,

j'ai utilisé le substring , il me donne une erreur si je donne un " endIndex" grand que 0 :

      String input=Inp.substring(0, 0);
       
System.out.println(input);


je sais pas pourquoi il accepte pas des Index supérieure à 0 ??

Merci d'avance
0
controlleur Messages postés 65 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 16 avril 2013
11 avril 2012 à 17:17
Bonjour

voici mon dernier résultats :
 Nom de l'image:      firefox.exe
PID:                 2980
Nom de la session:   Console
Num‚ro de session:   1
Utilisation m‚moire: 69ÿ188 Ko



j'arrive pas a récuperrer le champs PID...


code
public class Main {


public static void main(String[] args) throws IOException {
String name="firefox.exe";

String cmd= "tasklist /fo LIST /fi "IMAGENAME eq  "+ name + "";
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
String Inp;
String Inp2=null;
while((Inp=stdInput.readLine())!=null){ 
getg(Inp ,name);
}  
}

public static void getg( String Inp ,String name )
{
  
ArrayList myList = new ArrayList(); 
String[] myStringArray =  Inp.split("\n");

Collections.addAll(myList, myStringArray); 

 Object[] tab =  myList.toArray();

      for (int i=0;i<tab.length;i++)
      {
    	  System.out.println(tab[i]);
    	  
      }
  


}
}
0
Rejoignez-nous