2011-01-13 12 views
7

Estoy iniciando un navegador desde un archivo por lotes.Archivo por lotes de Windows: ¿PID del último proceso?

START "www.google.com" 

Me gustaría saber el PID de esta ventana del navegador que se inició.

Se pueden iniciar muchas ventanas del navegador en una sola máquina. Necesito encontrar el PID del proceso que fue lanzado por mi archivo por lotes solamente. Intenté con el filtro WINDOWTITLE. Pero no es una buena idea ya que los títulos pueden cambiar en el futuro. Estoy usando Windows XP/7

Cualquier ayuda sería apreciada. Gracias.

+0

¿Cómo 'START "www.google.com"' abierta una ventana del navegador? De acuerdo con el documento, START "title" abre una nueva ventana de consola con el título especificado. –

+0

Lo siento, tiene que ser, START "title" "www.google.com" –

+0

Creo que esta publicación pertenece a Super User –

Respuesta

0

Esto es sólo una idea, para conseguir que tal vez en el camino

hay un comando llamado de lista de tareas

hay una opción denominada filtro/FI con le permite decidir qué parámetros de filtro que desea generar , fe PID. Salida a un> 1.TXT

comenzar sus proces

vuelva a verificar la lista y la salida a 2.txt

Entonces tendría que ser creativo. Compare 1 a 2, tal vez elimine los procesos en 1 de 2.TXT ¿El PID restante es lo que usted quería?

0

Si tiene alguna experiencia en programación, puede crear su propia aplicación de consola que acepte parámetros de línea de comandos y los pase a la función Win32 API CreateProcess(). Uno de sus valores de salida es la identificación del proceso generado, que su aplicación podría devolver. A continuación, simplemente actualice su archivo por lotes para llamar a su aplicación en lugar de usar START directamente.

0

Estoy tratando de hacer lo mismo. Aunque debe haber alguna forma de hacerlo, pero todo lo que hago en Google sugiere que no.

Consulte robvanderwoude.com para ver una lista de herramientas de terceros y ejemplos. Consulte también la lista completa de las utilidades de proceso de Sysinternal here.

0

He estado buscando en esto por cerca de 2 horas de hoy y creo que hay una manera de hacer esto, pero requiere un poco de una visión más clara de cómo Windows maneja iexplore.exe para PID ...

Tengo una versión de trabajo de un archivo por lotes que escribí para obtener lo que desea, PERO solo si es la PRIMERA Y ÚNICA ventana de Internet Explorer abierta.

Por alguna razón no puedo obtener el PID para cambiar al abrir nuevos navegadores, pero puedo conseguir resultados si no hay ninguna ventana abierta (obviamente porque no hay PID)

De todos modos, esto es lo Tengo ... deberías poder ejecutar esto en tu sistema y te dirá que no hay diferencias y que en realidad podría producir resultados si tu navegador predeterminado es Firefox o Chrome o algo así ... solo necesitas hacer los cambios. a lo que estoy proporcionando.

@echo off 
IF EXIST c:\temp\pshell.txt del c:\temp\pshell.txt 
IF EXIST C:\temp\PID1.txt del C:\temp\PID1.txt 
IF EXIST C:\temp\PID2.txt del C:\temp\PID2.txt 
IF EXIST C:\temp\PowerFormat.txt del C:\temp\PowerFormat.txt 
powershell.exe Get-Process iexplore>C:\temp\pshell.txt 
FOR /F "skip=3 tokens=7 delims= " %%1 IN (c:\temp\pshell.txt) DO @echo %%1>> C:\temp\PID1.txt 
start "title" "www.google.com" 
powershell.exe Get-Process iexplore>C:\temp\pshell.txt 
FOR /F "skip=3 tokens=7 delims= " %%2 IN (c:\temp\pshell.txt) DO @echo %%2>> C:\temp\PID2.txt 

FC /L c:\temp\pid1.txt c:\temp\pid2.txt> C:\temp\FileComparison.txt 
FOR /F "tokens=7 delims=" %%3 IN (c:\temp\FileComparison.txt) DO @echo %%3>C:\temp\DiffPID.txt 

FINDSTR "FC: no differences encountered" c:\temp\FileComparison.txt 
IF '%ERRORLEVEL%'=='0' del C:\temp\FileComparison.txt & echo.No PID Found 
IF NOT '%ERRORLEVEL%'=='0' type c:\temp\FileComparison.txt 

pause 
exit 

Avísame si esto ayuda ...

2

Por lo que vale la pena (pregunta es más de 2 años de edad) este código el truco, sólo cambia la variable de acuerdo a los valores de exe navegador

set "browser=palemoon.exe" 

tasklist /FI "imagename eq %browser%" /NH /FO csv > task-before.txt 
start www.google.com 
tasklist /FI "imagename eq %browser%" /NH /FO csv > task-after.txt 

:: fc /L /LB1 test4-Before.txt test4-After.txt | find /I "%browser%" 
for /f "delims=, tokens=2,*" %%A in ('"fc /L /LB1 task-before.txt task-after.txt | find /I "%browser%""') do set pid=%%A 

SETLOCAL enabledelayedexpansion 
pid=!pid:"=! 
ENDLOCAL 
echo pid is %pid% 
Cuestiones relacionadas