[MS-DOS] Lister les processus selon le path

badside Messages postés 81 Statut Membre -  
badside Messages postés 81 Statut Membre -
Bonjour,

J'ai deux mêmes exécutables présents dans deux répertoires différents.

J'aimerais lister les ID des processus liés à l'exécutable d'un des deux répertoires en ligne de commande.

Avec l'exécutable notepad++.exe, j'ai essayé la commande suivante:
wmic process where (ExecutablePath="C:\Program Files\Répertoire1\Notepad++\notepad++.exe") get processid

J'obtiens l'erreur suivante:
Node - Hostname
ERROR:
Code = 0x80041017
Description = Invalid query
Facility = WMI

En essayant selon le nom de l'exécutable, cela fonctionne bien mais me donne tous les processus liés aux deux répertoires:

wmic process where (name="notepad++.exe") get processid

Quelqu'un a une idée ? Est-ce la syntaxe ? Ai-je oublié quelque chose ? Connaissez-vous une autre commande permettant de faire cela ?

Badside.

7 réponses

  1. boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
     
    j'ai trouvé là bas : https://isc.sans.edu/diary/The+Grammar+of+WMIC/2376

    A priori dans ton cas c'est un problème lié au séparateur de fichier car les lignes suivantes fonctionnent :
    C:\>wmic process where (executablepath like "%system32%") get Comm
    andLine, ProcessId
    C:\>wmic process where (executablepath like "C%Windows%System32%")
     get CommandLine, ProcessId
    C:\>wmic process where (executablepath like "C:\\Windows\\System32
    %") get CommandLine, ProcessId
    
    1
  2. badside Messages postés 81 Statut Membre 4
     
    En effet, nickel, ça fonctionne avec des \\

    Un grand merci à toi boly38 !
    0
  3. badside Messages postés 81 Statut Membre 4
     
    Autre question :
    Quand je fais cette commande, wmic me renvoit la liste des PID mais il termine toujours par un "echo is off". Comment faire pour qu'il ne le renvoit pas ?

    J'ai essayé:
    set deploypath=C:\\Program Files\\Windows NT\\Accessories 
    
    for /F %%i IN ('wmic process where (name="Wordpad.exe" and ExecutablePath="%deploypath%\\Wordpad.exe") get processid | more +1') do ( 
      if "%%i" neq "" echo %%i 
    ) 
    

    Mais cela ne fonctionne pas ...

    C'est embêtant car si je veux tuer ces processus,
    taskkill /PID 
    tout court me renvoit une erreur.

    Une idée ?
    0
  4. badside Messages postés 81 Statut Membre 4
     
    Up
    0
    1. boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
       
      je dirai que "echo is off" correspond à un %%i qui ne contient à que des caractères blanc (ou retour à la ligne); je suis pour tenter de rajouter les guillemets avec un echo "#%%i#" pour voir ce qu'il affiche entre les dièses.. peut être un retour ligne effectivement.. je n'ai pas d'autre idée.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. badside Messages postés 81 Statut Membre 4
     
    Ok merci !

    Comment reprendre ce caractère "retour à la ligne" dans mon if ?

    if %%i equ \r\n

    if %%i equ CRLF

    if %%i equ \n

    ???
    0
    1. boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
       
      je suppose que t'as essayé les "if" évoqués mais avec des guillemets ?
       if "%%i" equ "\r\n"
      

      sinon peut être essayer ceci (source : https://www.robvanderwoude.com/if.php ):
      IF "%%i"=="/?" ...
      
      0
    2. badside Messages postés 81 Statut Membre 4
       
      Oui j'ai essayé avec les "" mais ça ne fonctionne pas ...
      Le "%%i" == "/?" non plus :-(
      0
  7. badside Messages postés 81 Statut Membre 4
     
    Up
    0
  8. badside Messages postés 81 Statut Membre 4
     
    Personne ne sait ?

    Ça fait un moment que je ne trouve pas ... :-S

    Comment tester un retour à la ligne ?
    If %variable == "RETOURLIGNE" echo Ca marche !!!

    Merci !
    0