2011-01-13 35 views
7

Tôi đang khởi chạy trình duyệt từ tệp lô.Tệp batch của Windows: PID của quá trình cuối cùng?

START "www.google.com" 

Tôi muốn biết PID của cửa sổ trình duyệt này được khởi chạy.

Có thể có nhiều cửa sổ trình duyệt được khởi chạy trên một máy. Tôi cần phải tìm PID của quá trình được đưa ra bởi tập tin thực thi của tôi. Tôi đã thử với bộ lọc WINDOWTITLE. Nhưng nó không phải là một ý tưởng tốt vì tiêu đề có thể thay đổi trong tương lai. Tôi đang sử dụng Windows XP/7

Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn.

+0

Làm thế nào để 'START "www.google.com" 'mở cửa sổ trình duyệt? Theo tài liệu, START "title" mở một cửa sổ giao diện điều khiển mới với tiêu đề được chỉ định. –

+0

Tôi xin lỗi, nó phải là, BẮT ĐẦU "tiêu đề" "www.google.com" –

+0

Hãy nghĩ rằng bài đăng này thuộc về Siêu Người dùng –

Trả lời

0

Đây chỉ là một ý tưởng, để giúp bạn có thể trên đường

có một lệnh gọi Tasklist

có một công tắc được gọi là bộ lọc/FI với cho phép bạn quyết định những gì các thông số bộ lọc bạn muốn đầu ra , fe PID. Output này để a> 1.TXT

bắt đầu Proces bạn

kiểm tra lại danh sách theo dõi và đầu ra để 2.txt

Sau đó, bạn sẽ có để có được sáng tạo. COmpare 1 đến 2, có thể loại bỏ các quy trình trong 1 từ 2.TXT Các PID vẫn là những gì bạn muốn?

0

Nếu bạn có một số kinh nghiệm lập trình, bạn có thể tạo ứng dụng bảng điều khiển của riêng mình chấp nhận tham số dòng lệnh và chuyển chúng đến hàm Win32 API CreateProcess(). Một trong các giá trị đầu ra của nó là ID tiến trình sinh ra, sau đó ứng dụng của bạn có thể trở lại. Sau đó, chỉ cần cập nhật tệp hàng loạt của bạn để gọi cho ứng dụng của bạn thay vì sử dụng trực tiếp START.

0

Tôi đang cố gắng làm điều tương tự. Mặc dù phải có một số cách để làm điều đó, nhưng tất cả Googling của tôi cho thấy không.

Khám phá robvanderwoude.com để xem danh sách các công cụ và ví dụ của bên thứ ba. Ngoài ra, hãy xem danh sách đầy đủ các tiện ích quy trình của Sysinternal here.

0

Tôi đã nhìn vào này trong khoảng 2 giờ bây giờ và tôi nghĩ rằng có một cách để làm điều này, nhưng nó đòi hỏi một số cái nhìn sâu sắc hơn về cách các cửa sổ xử lý iexplore.exe cho PID ...

Tôi có một phiên bản làm việc của một tập tin batch tôi đã viết sẽ giúp bạn có được những gì bạn muốn, NHƯNG chỉ khi cửa sổ Internet Explorer đầu tiên và duy nhất của nó mở.

Đối với một số lý do tôi không thể có được PID để thay đổi khi tôi mở trình duyệt mới, nhưng tôi có thể nhận được kết quả nếu không có cửa sổ đang mở (rõ ràng vì không có PID)

Nhưng dù sao, đây là những gì Tôi có ... bạn sẽ có thể chạy trên hệ thống của bạn và nó sẽ cho bạn biết rằng không có sự khác biệt và nó thực sự có thể tạo ra kết quả nếu trình duyệt mặc định của bạn là Firefox hoặc Chrome hoặc một cái gì đó ... chỉ cần thực hiện các thay đổi với những gì tôi đang cung cấp.

@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 

Hãy cho tôi biết nếu điều này giúp ...

2

Đối với những gì nó có giá trị (câu hỏi là hơn 2 tuổi) mã này làm các việc lừa, chỉ cần thay đổi biến theo exe trình duyệt mặc định

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% 
Các vấn đề liên quan