Làm thế nào bạn có thể tìm ra quá trình đang lắng nghe trên một cổng trên Windows?


2274

Làm thế nào bạn có thể tìm ra quá trình đang lắng nghe trên một cổng trên Windows?


3
Currports là một công cụ giúp tìm kiếm + lọc quá nirsoft.net/utils/cports.html
Mây xanh

1
Tôi đã gặp phải điều này trong khi cố gắng chạy Tomcat ở chế độ gỡ lỗi trong IntelliJ, giải pháp tốt nhất cho tôi hóa ra là thay đổi cấu hình vận chuyển gỡ lỗi (Tệp-> Cài đặt-> Xây dựng / exe / triển khai-> Trình gỡ lỗi) từ "socket" thành "Bộ nhớ chia sẻ".
TMN

Câu trả lời:


2624

Câu trả lời mới, powershell

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

Câu trả lời cũ, cmd

 C:\> netstat -a -b

(Thêm -n để ngăn chặn nó cố gắng giải quyết tên máy chủ, điều này sẽ làm cho nó nhanh hơn rất nhiều.)

Lưu ý đề xuất của Dane cho TCPView . Có vẻ rất hữu ích!

-a Hiển thị tất cả các kết nối và cổng nghe.

-b Hiển thị tệp thực thi liên quan đến việc tạo từng kết nối hoặc cổng nghe. Trong một số trường hợp, các tệp thực thi nổi tiếng lưu trữ nhiều thành phần độc lập và trong các trường hợp này, chuỗi các thành phần liên quan đến việc tạo kết nối hoặc cổng nghe được hiển thị. Trong trường hợp này, tên thực thi nằm ở [] ở phía dưới, trên cùng là thành phần mà nó được gọi, và cứ thế cho đến khi đạt được TCP / IP. Lưu ý rằng tùy chọn này có thể tốn thời gian và sẽ thất bại trừ khi bạn có đủ quyền.

-n Hiển thị địa chỉ và số cổng ở dạng số.

-o Hiển thị ID tiến trình sở hữu được liên kết với mỗi kết nối.


252
-o để có được PID
Laurent K

121
và taskkill / PID <pid> để sau đó chấm dứt quá trình, sử dụng / F nếu thích hợp.
BitMask777

81
Bạn có thể phải chạy shell dòng lệnh của mình với tư cách quản trị viên, nếu không bạn có thể nhận được thông báo lỗi về các đặc quyền không đủ. Sử dụng tùy chọn "Chạy với tư cách quản trị viên" khi nhấp chuột phải vào cmd.exe.
Gruber

6
Hoạt động nhưng đòi hỏi sự cho phép cao. Shift + nhấp chuột phải vào biểu tượng lệnh -> chạy với tư cách quản trị viên
Christian Bongiorno

18
Có được PID - giả sử nó 1234- sau đó bạn có thể sử dụng tasklist /fi "pid eq 1234"để tìm ra tên và các chi tiết khác của quy trình.
Steve Chambers

2203

Có một GUI gốc cho Windows:

  • Menu bắt đầu → Tất cả chương trìnhPhụ kiệnCông cụ hệ thốngGiám sát tài nguyên

Hoặc Chạy resmon.exe hoặc từ tab hiệu suất của Trình quản lý tác vụ .

Nhập mô tả hình ảnh ở đây


41
Cũng hiển thị trạng thái tường lửa của ràng buộc (cột cuối cùng). Rất tận dụng.
Raphael

8
Bạn cần phải là quản trị viên (hoặc trong nhóm đó) để chạy cái này.
KrishPrabakar

2
@bcorso, ràng buộc với " địa chỉ không xác định " nghĩa là gì?
Pacerier

5
Cũng có thể được khởi chạy từ tab Hiệu suất của Trình quản lý tác vụ, ít nhất là trong Windows 10. (Chưa kiểm tra các phiên bản khác.)
Mathieu K.

10
Nhận xét của @ user4836454 ở trên là KHÔNG chính xác: Resource Monitor DOES hiển thị các cổng với người nghe, ngay cả khi không có kết nối mạng với các cổng này. Chỉ cần nhìn vào phần "Cổng nghe" thay vì phần "Kết nối TCP".
Jpsy

235

Sử dụng TCPView nếu bạn muốn có GUI cho việc này. Đây là ứng dụng Sysiternals cũ mà Microsoft đã mua.


9
Theo tôi, đây là tùy chọn tốt nhất, đặc biệt vì tất cả các quy trình đều nằm trong cùng một danh sách và bạn có thể đóng các quy trình trực tiếp bằng cách nhấp chuột phải vào chúng.
Andreas Lundgren

8
Ngoài ra, điều này không yêu cầu quyền riêng tư của quản trị viên!
Janac Meena

222

Cho cửa sổ:

netstat -aon | find /i "listening"

25
+1 Nhưng hãy nhớ, nếu cửa sổ của bạn chạy bằng ngôn ngữ khác tiếng Anh, bạn sẽ phải thay đổi "nghe" sang thuật ngữ bản địa. Ví dụ netstat -aon | find /i "abhören"cho tiếng Đức.
Levite

2
Trong trường hợp của tôi, nó không hoạt động có thể vì dấu ngoặc kép, nhưng giải pháp netstat -aon | findstr LISTENING hoạt động hoàn hảo!
Bố già

Điều này hoạt động mà không yêu cầu đặc quyền nâng cao để nâng cao.
Vlad Schnakovszki

1
Tôi đang gặp lỗi khi cố chạy lệnh này trên W10 15063.729 với PowerShell:FIND: Parameter format not correct
Nicke Manarin

1
Làm thế nào câu trả lời này có liên quan đến "tìm ra quá trình [tên] đang lắng nghe trên một cổng trên Windows?"
Pawel Cioch

137

Công tắc -b được đề cập trong hầu hết các câu trả lời yêu cầu bạn phải có quyền quản trị trên máy. Bạn không thực sự cần quyền nâng cao để có được tên quy trình!

Tìm pid của quá trình đang chạy trong số cổng (ví dụ: 8080)

netstat -ano | findStr "8080"

Tìm tên quá trình bằng pid

tasklist /fi "pid eq 2216"

tìm quá trình bằng cổng TCP / IP


82

Bạn có thể nhận thêm thông tin nếu bạn chạy lệnh sau:

netstat -aon | find /i "listening" |find "port"

sử dụng lệnh 'Tìm' cho phép bạn lọc kết quả. find /i "listening"sẽ chỉ hiển thị các cổng đang 'Nghe'. Lưu ý, bạn cần /ibỏ qua trường hợp, nếu không bạn sẽ gõ "LISTENING". | find "port"sẽ giới hạn kết quả chỉ những kết quả có chứa số cổng cụ thể. Lưu ý, về điều này, nó cũng sẽ lọc các kết quả có số cổng ở bất cứ đâu trong chuỗi phản hồi.


8
FWIW cố chạy cái này trong PowerShell v2.0 mang lại lỗi FIND: Parameter format not correct. Bạn cần thêm một khoảng trắng sau khi tìm tiêu chí. Điều này sẽ để lại cho bạn với netstat -aon | find /i "listening" | find "1234 ".
tự.

2
Thay thế "cổng" ở trên bằng cổng của bạn, ví dụ "5000"
jbooker

1
@ mình. Tôi vẫn gặp lỗi đó với PS 5.1, ngay cả sau khi thêm khoảng trắng sau đường ống. Bạn có biết những gì đang xảy ra?
Nicke Manarin

2
@NickeManarinin & @self thay đổi một trong hai đầu tiên từ PowerShell để cmd (chỉ cần gõ cmd và nhấn enter sau đó thực hiện lại lệnh) hoặc sử dụng PowerShell lệnh này để thay thế: -aon netstat | find / i " {back tick}'lắng nghe {back tick}'' | tìm' {back tick}'cổng {back tick}' "(<- lưu ý các trích dẫn đã thoát - xin lỗi back tickvì tôi không thể thêm ký tự thực tế vì nó nghĩ rằng đó là một đoạn trích)
Tristan van Dam

72
  1. Mở cửa sổ nhắc lệnh (với tư cách Quản trị viên) Từ "Bắt đầu \ Hộp tìm kiếm" Nhập "cmd", sau đó nhấp chuột phải vào "cmd.exe" và chọn "Chạy với tư cách Quản trị viên"

  2. Nhập văn bản sau, sau đó nhấn Enter.

    netstat -abno

    -a Hiển thị tất cả các kết nối và cổng nghe.

    -b Hiển thị tệp thực thi liên quan đến việc tạo từng kết nối hoặc cổng nghe. Trong một số trường hợp, các tệp thực thi nổi tiếng lưu trữ nhiều thành phần độc lập và trong các trường hợp này, chuỗi các thành phần liên quan đến việc tạo kết nối hoặc cổng nghe được hiển thị. Trong trường hợp này, tên thực thi nằm ở [] ở phía dưới, trên cùng là thành phần mà nó được gọi, và cứ thế cho đến khi đạt được TCP / IP. Lưu ý rằng tùy chọn này có thể tốn thời gian và sẽ thất bại trừ khi bạn có đủ quyền.

    -n Hiển thị địa chỉ và số cổng ở dạng số.

    -o Hiển thị ID tiến trình sở hữu được liên kết với mỗi kết nối.

  3. Tìm Cổng mà bạn đang nghe trong "Địa chỉ cục bộ"

  4. Nhìn vào tên quá trình trực tiếp dưới đó.

LƯU Ý: Để tìm quy trình trong Trình quản lý tác vụ

  1. Lưu ý PID (mã định danh quy trình) bên cạnh cổng bạn đang xem.

  2. Mở Trình quản lý tác vụ Windows.

  3. Chọn tab Quy trình.

  4. Tìm kiếm PID mà bạn đã lưu ý khi bạn thực hiện netstat ở bước 1.

    • Nếu bạn không thấy cột PID, bấm vào Xem / Chọn Cột. Chọn PID.

    • Hãy chắc chắn rằng các quy trình của Show Show từ tất cả người dùng được chọn.


56

Nhận tên và hình ảnh

Chỉ sử dụng một lệnh:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"

nơi 9000nên được thay thế bằng số cổng của bạn.

Đầu ra sẽ chứa một cái gì đó như thế này:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
java.exe                      5312 Services                   0    130,768 K

Giải trình:

  • nó lặp qua mỗi dòng từ đầu ra của lệnh sau:

    netstat -aon | findstr 9000
    
  • từ mỗi dòng, PID ( %a- tên không quan trọng ở đây) được trích xuất (PID là phần tử 5thứ trong dòng đó) và được truyền cho lệnh sau

    tasklist /FI "PID eq 5312"
    

Nếu bạn muốn bỏ qua các tiêu đề và sự trở lại của dấu nhắc lệnh , bạn có thể sử dụng:

echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on

Đầu ra:

java.exe                      5312 Services                   0    130,768 K

2
Câu trả lời hay, nhưng bạn nên đổi nó thành findstr :9000nếu không, thậm chí bạn sẽ tìm thấy các ứng dụng chứa số (ví dụ: khi bạn tìm kiếm "80", bạn cũng sẽ tìm thấy các ứng dụng trên cổng 80, 800, 8000).
Radon8472

48

Đầu tiên chúng ta tìm id tiến trình của tác vụ cụ thể mà chúng ta cần loại bỏ để có được cổng miễn phí:

Kiểu

netstat -n -a -o

Sau khi thực hiện lệnh này trong dấu nhắc dòng lệnh Windows (cmd), chọn pid mà tôi nghĩ là cột cuối cùng. Giả sử đây là 3312.

Bây giờ gõ

taskkill /F /PID 3312

Bây giờ bạn có thể kiểm tra chéo bằng cách gõ netstatlệnh.

LƯU Ý: đôi khi Windows không cho phép bạn chạy lệnh này trực tiếp trên CMD, vì vậy trước tiên bạn cần thực hiện các bước sau:

Từ menu start -> dấu nhắc lệnh (nhấp chuột phải vào dấu nhắc lệnh và chạy với tư cách quản trị viên)


30

Để có danh sách tất cả các ID quy trình sở hữu được liên kết với mỗi kết nối:

netstat -ao |find /i "listening"

Nếu muốn giết bất kỳ tiến trình nào có ID và sử dụng lệnh này, để cổng đó trở nên miễn phí

Taskkill /F /IM PID of a process

1
đây không phải là tài khoản để nghe các cổng UDP
evandrix

27

Rất đơn giản để lấy số cổng từ một PID trong Windows.

Sau đây là các bước:

  1. Đi để chạy → gõ cmd → nhấn Enter.

  2. Viết lệnh sau ...

    netstat -aon | findstr [port number]
    

    (Lưu ý: Không bao gồm dấu ngoặc vuông.)

  3. Nhấn Enter...

  4. Sau đó cmd sẽ cung cấp cho bạn chi tiết về dịch vụ đang chạy trên cổng đó cùng với bộ vi xử lý.

  5. Mở Trình quản lý tác vụ và nhấn tab dịch vụ và khớp với PID với cmd, và đó là nó.


18

Chỉ cần mở một vỏ lệnh và gõ (nói rằng cổng của bạn là 123456):

netstat -a -n -o | find "123456"

Bạn sẽ thấy mọi thứ bạn cần.

Các tiêu đề là:

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:37             0.0.0.0:0              LISTENING       1111

Điều này như được đề cập ở đây .


1
FYI / cho bất cứ ai quan tâm: Đó là findstr 123456(không có dấu ngoặc kép) hoặc find "123456"(có dấu ngoặc kép). (
@Josh

18

Để tìm hiểu quá trình cụ thể (PID) đang sử dụng cổng nào:

netstat -anon | findstr 1234

Trong đó 1234 là PID của quá trình của bạn. [Chuyển đến Trình quản lý tác vụ → tab Dịch vụ / Quy trình để tìm hiểu PID của ứng dụng của bạn.]


1
Cần lưu ý rằng bạn không cần -nđặt cờ hai lần. -anoLà đủ.
mwieczorek

16

Với PowerShell 5 trên Windows 10 hoặc Windows Server 2016, hãy chạy Get-NetTCPConnectionlệnh ghép ngắn. Tôi đoán rằng nó cũng sẽ hoạt động trên các phiên bản Windows cũ hơn.

Đầu ra mặc định Get-NetTCPConnectionkhông bao gồm Process ID bởi một số lý do và nó hơi khó hiểu. Tuy nhiên, bạn luôn có thể lấy nó bằng cách định dạng đầu ra. Các tài sản bạn đang tìm kiếm là OwningProcess.

  • Nếu bạn muốn tìm ra ID của quá trình đang nghe trên cổng 443, hãy chạy lệnh này:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-List
    
    LocalAddress   : ::
    LocalPort      : 443
    RemoteAddress  : ::
    RemotePort     : 0
    State          : Listen
    AppliedSetting :
    OwningProcess  : 4572
    CreationTime   : 02.11.2016 21:55:43
    OffloadState   : InHost
    
  • Định dạng đầu ra cho một bảng với các thuộc tính bạn tìm kiếm:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-Table -Property LocalAddress, LocalPort, State, OwningProcess
    
    LocalAddress LocalPort  State OwningProcess
    ------------ ---------  ----- -------------
    ::                 443 Listen          4572
    0.0.0.0            443 Listen          4572
    
  • Nếu bạn muốn tìm ra tên của quá trình, hãy chạy lệnh này:

    PS C:\> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
    143      15     3448      11024              4572   0 VisualSVNServer
    


13

Nhập lệnh: netstat -aon | findstr :DESIRED_PORT_NUMBER

Ví dụ: nếu tôi muốn tìm cổng 80: netstat -aon | findstr :80

Câu trả lời này ban đầu được đăng cho câu hỏi này .


11

Netstat:

  • -a hiển thị tất cả các cổng kết nối và nghe
  • -b hiển thị các tệp thực thi
  • -n dừng giải quyết tên máy chủ (dạng số)
  • quá trình sở hữu

    netstat -bano | findstr "7002"
    
    netstat -ano > ano.txt 
    

Công cụ Currports giúp tìm kiếm và lọc


11
  1. Mở dấu nhắc lệnh - bắt đầu → Chạycmdhoặc menu bắt đầu → Tất cả chương trìnhPhụ kiệnDấu nhắc lệnh .

  2. Kiểu

    netstat -aon | findstr '[port_number]'
    

Thay thế [port_number]bằng số cổng thực tế mà bạn muốn kiểm tra và nhấn Enter.

  1. Nếu cổng đang được sử dụng bởi bất kỳ ứng dụng nào, thì chi tiết của ứng dụng đó sẽ được hiển thị. Số, được hiển thị ở cột cuối cùng của danh sách, là PID (ID tiến trình) của ứng dụng đó. Hãy lưu ý điều này.
  2. Kiểu

    tasklist | findstr '[PID]'
    

Thay thế [PID]bằng số từ bước trên và nhấn Enter.

  1. Bạn sẽ được hiển thị tên ứng dụng đang sử dụng số cổng của bạn.

3
Trên Win 10: Lệnh của bạn ở bước 2 và bước 4 không hoạt động trừ khi bạn thay thế dấu ngoặc kép đơn giản bằng dấu ngoặc kép. Nên nói netstat -aon | findstr "[port_number]"
Leonardo Lopez

Giải pháp này không yêu cầu sự cho phép cao. Tks!
Totalys

10

netstat -aonetstat -abcho bạn biết ứng dụng, nhưng nếu bạn không phải là quản trị viên hệ thống, bạn sẽ nhận được "Thao tác được yêu cầu yêu cầu độ cao".

Điều đó không lý tưởng, nhưng nếu bạn sử dụng Process Explorer của Sysiternals, bạn có thể đi đến các thuộc tính của các quy trình cụ thể và nhìn vào tab TCP để xem họ có đang sử dụng cổng mà bạn quan tâm hay không. Đó là một chút kim và haystack điều này, nhưng có lẽ nó sẽ giúp được ai đó ...


Nếu bạn không phải là quản trị viên, bạn sẽ không thể sử dụng Process Explorer (hoặc thậm chí Windows Manager Manager> Resource Manager) để lấy thông tin này từ bất kỳ quy trình nào không phải của bạn để bắt đầu.
Abel

9

Tôi khuyên dùng CurrPorts từ NirSoft.

CurrPorts có thể lọc các kết quả được hiển thị. TCPView không có tính năng này.

Lưu ý: Bạn có thể nhấp chuột phải vào kết nối ổ cắm của quy trình và chọn "Đóng kết nối TCP được chọn" (Bạn cũng có thể thực hiện việc này trong TCPView). Điều này thường khắc phục các sự cố kết nối tôi gặp phải với Outlook và Lync sau khi tôi chuyển đổi VPN. Với CurrPorts, bạn cũng có thể đóng các kết nối từ dòng lệnh với tham số "/ close".


7

Một giải pháp đơn giúp tôi là giải pháp này. Chỉ cần thay 3000 bằng cổng của bạn:

$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; Stop-Process $P.Id

Chỉnh sửa: Thay đổi killthành Stop-Processngôn ngữ giống PowerShell hơn


6
Bạn có thể không muốn giết quá trình tự động. Tôi sẽ tách lệnh giết đó và giải thích nó. Đừng muốn một số người dùng sao chép kém mà không suy nghĩ cẩn thận.
TinkerTenorSoftwareGuy

1
Và nếu bạn đang tìm giải pháp PowerShell đầy đủ, hãy đổi kill thành Stop-Process Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
CubanX

6

Thực hiện theo các công cụ sau: Từ cmd : C:\> netstat -anobvới đặc quyền Quản trị viên .

Trình khám phá quy trình

Đổ quy trình

Giám sát cổng

Tất cả từ sysiternals.com.

Nếu bạn chỉ muốn biết quá trình chạy và các chủ đề theo từng quy trình, tôi khuyên bạn nên tìm hiểu về wmic. Nó là một công cụ dòng lệnh tuyệt vời, cung cấp cho bạn nhiều hơn những gì bạn có thể biết.

Thí dụ:

c:\> wmic process list brief /every:5

Lệnh trên sẽ hiển thị một danh sách tất cả quá trình ngắn gọn cứ sau 5 giây. Để biết thêm, bạn có thể chỉ cần sử dụng /?lệnh của windows

c:\> wmic /?
c:\> wmic process /?
c:\> wmic prcess list /?

Vân vân và vân vân. :)


PortMon (liên kết phía sau Cổng giám sát) là để giám sát các cổng nối tiếpsong song , không phải cổng mạng.
James

6

Sử dụng:

netstat -a -o

Điều này cho thấy PID của quá trình đang chạy trên một cổng cụ thể.

Hãy ghi nhớ ID tiến trình và chuyển đến Trình quản lý tác vụ và các tab dịch vụ hoặc chi tiết và kết thúc quá trình có cùng một PID.

Do đó, bạn có thể giết một tiến trình đang chạy trên một cổng cụ thể trong Windows.


6

Đối với những người sử dụng PowerShell, hãy thử Get-NetworkStatistics:

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552


5

Sử dụng PowerShell ... ... đây sẽ là bạn của bạn (thay thế 8080 bằng số cổng của bạn):

 netstat -abno | Select-String -Context 0,1 -Pattern 8080

Sản lượng mẫu

>   TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING         2920
   [tnslsnr.exe]
>   TCP    [::]:8080              [::]:0                 LISTENING         2920
   [tnslsnr.exe]

Vì vậy, trong ví dụ này tnslsnr.exe (cơ sở dữ liệu OracleXE) đang lắng nghe trên cổng 8080.

Giải thích nhanh

  • Select-Stringđược sử dụng để lọc đầu ra dài netstatcho các dòng liên quan.
  • -Pattern kiểm tra từng dòng chống lại một biểu thức chính quy.
  • -Context 0,1 sẽ xuất ra 0 dòng hàng đầu và 1 dòng theo dõi cho mỗi mẫu phù hợp.

2

Đối với Windows, nếu bạn muốn tìm nội dung nghe hoặc kết nối với cổng 1234, hãy thực hiện các thao tác sau tại dấu nhắc cmd:

netstat -na | find "1234"

1

Sử dụng tập lệnh bó bên dưới, lấy tên quy trình làm đối số và đưa netstatra kết quả cho quy trình.

@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End

:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------

netstat -ano |findstr %z%
goto :eof

:End

1

Dựa trên câu trả lời với thông tintiêu diệt , đối với tôi, việc kết hợp chúng trong một lệnh là rất hữu ích . Và bạn có thể chạy nó từ cmd để lấy thông tin về quá trình lắng nghe trên cổng đã cho (ví dụ 8080):

for /f "tokens=3 delims=LISTENING" %i  in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @tasklist /nh /fi "pid eq %i"

Hoặc nếu bạn muốn giết nó:

for /f "tokens=3 delims=LISTENING" %i  in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @Taskkill /F /IM %i

Bạn cũng có thể đặt các lệnh đó vào một tập tin bat (chúng sẽ hơi khác một chút - thay thế %icho %%i):

Tập tin portInfo.bat

for /f "tokens=3 delims=LISTENING" %%i  in (
    'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @tasklist /nh /fi "pid eq %%i"

Tập tin portKill.bat

for /f "tokens=3 delims=LISTENING" %%i  in (
    'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @Taskkill /F /IM %%i

Sau đó, bạn từ cmd bạn có thể làm điều này:

portInfo.bat 8080

hoặc là

portKill.bat 8080


1
Đây có thể là một kịch bản hữu ích. Tuy nhiên, tôi đã thử nó trong CMD cũng như PowerShell 6 mà không gặp may. Có lẽ bạn có thể cải thiện câu trả lời của mình bằng cách cung cấp thêm một chút chi tiết.
Manfred

Là phần đầu tiên làm việc? Có phải chỉ có vấn đề với "dơi"? Có một số khác biệt trong việc chuyển các biến: (%% i)
lczapski

@Manfred Tôi đã thử cái này trên 3 Windows khác nhau. Ví dụ như .\portInfo.bat 800trong PowerShell, nó cung cấp một cái gì đó như thế này:C:\work>for /F "tokens=3 delims=LISTENING" %i in ('netstat -ano | findStr "800" | findStr "["') do (tasklist /fi "pid eq %i" ) C:\work>(tasklist /fi "pid eq 4" ) Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System 4 Services 0 1,820 K
lczapski

Xin lỗi, không có may mắn. Tôi đặt lệnh đó vào một tên lửa có tên portInfo.battrong thiết bị đầu cuối powershell, sau đó thực thi .\portInfo.bat 8080. Đầu ra chỉ là nội dung của tệp bó. Rất có khả năng tôi đang nhìn một cái gì đó. Lưu ý, tôi đang sử dụng PowerShell 6.2.3 trên Windows 10. Tôi cũng đã thử nó trong một dấu nhắc lệnh thông thường, nhưng kết quả là như nhau: Đầu ra nội dung của tập lệnh. Tôi chắc chắn rằng tôi đang thiếu một thông tin quan trọng để thực hiện công việc này.
Manfred

1
Tại sao không thêm /nh: @tasklist /nh /fi "pid eq %i"? Và chính xác là cánh cửa:Findstr ":8080"
Không phải tôi

0

Trong trường hợp của tôi, cổng (3000) hoàn toàn không được sử dụng và không hiển thị trong netstat. Nhưng! Trình gỡ cài đặt Docker cho Windows đã giải quyết vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.