Lo que está buscando es el nombre del archivo en el que está trabajando cada proceso, si corresponde.
fondo
El problema es que el nombre del archivo en el que se está trabajando (a diferencia del nombre del archivo ejecutable) normalmente no se muestra en el resultado de la lista de tareas, o el resultado de cualquier otra herramienta de línea de comandos estándar que conozca.
Un proceso siempre tiene una lista interna de los archivos que tiene abiertos, estos están en el proceso "tabla de manejadores". Esto es visible en, por ejemplo. Explorador de procesos, pero desea una herramienta de línea de comandos. Y no hay una forma general de saber, entre todos los archivos que un proceso tiene abierto, cuál es el documento que el proceso está abierto para editar.
Sin embargo. Algunas aplicaciones, incluidos el Bloc de notas, el conjunto de aplicaciones de Office y muchas otras, establecen el nombre del archivo en el título de su ventana. p.ej. "Notepad file1.txt" Esto no es consistente de una aplicación a otra. Una aplicación puede establecer su título de Windows a lo que quiera. Un programa podría, por ejemplo, poner su propio nombre primero y luego el nombre del archivo. Lo que sea.
Por lo tanto, desea mirar los títulos de las ventanas. El Administrador de tareas puede mostrar los títulos de las ventanas, pero usted desea una herramienta de línea de comandos. Como señala JosefZ, tasklist / v puede hacer esto. (También hay un pequeño programa llamado tlist que lo hará. Viene con el paquete de herramientas de depuración de Windows.) Sin embargo, estos le mostrarán, además de los procesos que desea, una gran cantidad de procesos que no tienen nombres de ventanas. .
responder
¡PowerShell al rescate! Intente esto en su símbolo del sistema: (No tiene que estar en c: \, es solo un ejemplo)
c:\> powershell -command "get-Process | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
Esto mostrará una lista de todos los procesos que tienen un título de ventana no vacía.
Si solo quieres ver los procesos que ejecutan un programa en particular, como el bloc de notas, puedes poner ese nombre antes de la primera canalización, así:
c:\> powershell -command "get-Process notepad | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
Esto filtra la salida de get-Process antes de que llegue al resto de los comandos. El comando where-Object filtra los títulos de las ventanas que no están vacíos, y la tabla de formato simplemente coloca el resultado en una tabla ordenada.
Ahora, hagámoslo más fácil. Coloque lo siguiente en un archivo .cmd, digamos que lo llama wn.cmd (wn para windowname). Ponga wn.cmd en algún directorio que esté en su ruta. (Siempre creo un directorio llamado c: \ progs y lo agrego a mi ruta, para pequeñas cosas como esta. También coloco las herramientas de sysinternals en ese directorio).
c:\> @echo off
c:\> powershell -command "get-Process %1 | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"
ejemplos
Ahora, en el símbolo del sistema ... asumiendo que wn.cmd está en algún lugar de su ruta ... puede simplemente escribir
c:\> wn
y obtendrás la lista completa de procesos con ventanas nombradas ... así:
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
y si escribe por ejemplo
c:\> wn notepad
obtienes solo los que están ejecutando el bloc de notas:
Id Name MainWindowTitle
-- ---- ---------------
6240 notepad Untitled - Notepad
13096 notepad wn.cmd - Notepad
15348 notepad notes2.txt - Notepad
(Esta selección va por el nombre del ejecutable, no por el título de la ventana).
Crédito a quien crédito merece: Encontré el "script" original de powershell para listar procesos con ventanas con nombre de esta página en powershell.com . Empaquetarlo en un archivo .cmd hace que sea más fácil de usar.
"tokens=2,9 delims=,"
y lista de tareas con/v
parámetro detallado y luego… do @echo %~F:%~G
.