Apakah ada hal seperti pipa atau sejenisnya yang dapat saya gunakan pada OS Windows untuk menjalankan perintah ini dalam satu baris?
Keduanya cmd.exedan pipa dukungan PowerShell dari satu perintah ke perintah lainnya. Dalam PowerShell sesuatu seperti (ini harus berada pada satu baris pada baris perintah, atau gunakan `untuk mengawal baris baru dalam skrip):
netstat -ano
| select -skip 4
| % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}}
| ? {$_.Fields[1] -match '15120$'}
| % {taskkill /F /PID $_.Fields[4] }
Dimana:
Select -skip 4melompati empat baris tajuk pertama. ( Selectkependekan dari Select-Objectdigunakan untuk melakukan SQL SELECT seperti proyek objek.
%kependekan Foreach-Objectyang melakukan blok skrip pada setiap objek ( $_) di dalam pipa dan mengeluarkan hasil dari blok skrip ke pipa. Ini dia pertama-tama memecah input menjadi array bidang dan kemudian membuat objek segar dengan dua properti Originaldari string netstatdan Fieldsarray yang baru saja dibuat.
?kependekan dari Where-Objectfilter mana yang didasarkan pada hasil dari blok skrip. Di sini cocok dengan regex pada akhir bidang kedua (semua wadah PowerShell berbasis nol).
(Semua diuji kecuali elemen terakhir: Saya tidak ingin memulai proses mematikan :-)).
Dalam praktiknya saya akan menyederhanakan ini, misalnya. mengembalikan hanya 0 atau PID dari yang pertama foreach(yang akan dirancang untuk mengabaikan header) dan memfilter pada nilai tidak nol sebelum memanggil taskkill. Ini akan lebih cepat untuk mengetik tetapi lebih sulit untuk diikuti tanpa mengetahui PowerShell.
findstr(Windowsgrep). Sebagai contoh:netstat -a -o -n | findstr "LISTENING" | findstr ":135". Mungkin ini membuat Anda selangkah lebih dekat;)