Ce que vous recherchez, c'est le nom du fichier sur lequel chaque processus travaille - le cas échéant.
arrière-plan
Le problème est que le nom du fichier sur lequel on travaille (contrairement au nom du fichier exécutable) n'est pas normalement affiché dans la sortie de la liste des tâches, ou dans la sortie de tout autre outil de ligne de commande standard que je connais.
Un processus dispose toujours d'une liste interne des fichiers qu'il a ouverts - ceux-ci se trouvent dans la "table des poignées" du processus. Cette liste est visible dans l'Explorateur de processus, par exemple, mais vous avez besoin d'un outil en ligne de commande. Et il n'y a pas de moyen général de savoir, parmi tous les fichiers qu'un processus a ouvert, lequel est le document que le processus est ouvert pour éditer.
Cependant. Certaines applications, dont le Bloc-notes, la suite Office et bien d'autres, définissent le nom du fichier dans le titre de leur fenêtre, par exemple "Bloc-notes fichier1.txt". Une application peut définir le titre de sa fenêtre comme elle le souhaite. Un programme peut, par exemple, mettre son propre nom en premier et ensuite le nom du fichier. Peu importe.
Donc, vous voulez regarder les titres des fenêtres. Le gestionnaire de tâches peut afficher les titres des fenêtres, mais vous voulez un outil en ligne de commande. Comme le note JosefZ, tasklist /v peut le faire. (Il existe également un petit programme appelé tlist qui peut le faire. Il est fourni avec le paquetage Windows Debugging Tools). Cependant, ces programmes vous montreront, en plus des processus que vous voulez, tout un tas de processus qui n'ont pas de nom de fenêtre.
réponse
PowerShell à la rescousse ! Essayez ceci à votre invite de commande : (Vous n'êtes pas obligé d'être à c:\, c'est juste un exemple)
c:\> powershell -command "get-Process | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
Cela permettra de lister tous les processus qui ont un titre de fenêtre non vide.
Si vous voulez seulement voir les processus qui exécutent un programme particulier - comme Notepad - vous pouvez mettre ce nom avant le premier tuyau, comme ceci :
c:\> powershell -command "get-Process notepad | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
Cela filtre la sortie de get-Process avant qu'elle n'atteigne le reste des commandes. La commande where-Object filtre les titres de fenêtres non vides, et la commande format-table met simplement le résultat dans un tableau soigné.
Maintenant, rendons les choses plus faciles. Mettez ce qui suit dans un fichier .cmd, disons que vous l'appelez wn.cmd (wn pour windowname). Mettez wn.cmd dans un répertoire qui est dans votre chemin. (Je crée toujours un répertoire appelé c : \progs et ajouter ça à mon chemin, pour des petites choses comme ça. Je mets aussi les outils sysinternals dans ce répertoire).
c:\> @echo off
c:\> powershell -command "get-Process %1 | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
exemples
Maintenant, à l'invite de commande... en supposant que wn.cmd est quelque part dans votre chemin... vous pouvez simplement taper
c:\> wn
et vous obtiendrez la liste complète des processus avec le nom de Windows comme ceci :
Id Name MainWindowTitle
-- ---- ---------------
9596 chrome How can I show the file NAME of each running process from the command-line in Windows? - Super ...
11980 cmd Command Prompt - wn
10164 explorer progs
10180 Horas Horas - Fri 11
2520 notepad windownames.ps1 - Notepad
15348 notepad notes2.txt - Notepad
8304 OUTLOOK Inbox - mailbox - Outlook
17312 powershell_ise Windows PowerShell ISE
6140 TTool103 Alarm
et si vous tapez par exemple
c:\> wn notepad
vous n'obtenez que ceux qui utilisent Notepad :
Id Name MainWindowTitle
-- ---- ---------------
6240 notepad Untitled - Notepad
13096 notepad wn.cmd - Notepad
15348 notepad notes2.txt - Notepad
(Cette sélection se fait par le nom de l'exécutable, pas par le titre de la fenêtre).
Le crédit où le crédit est dû : J'ai trouvé le powershell original "script" pour lister les processus avec des Windows nommés à partir de cette page à powershell.com . L'empaqueter dans un fichier .cmd le rend plus facile à utiliser.