टास्कलिस्ट के साथ किसी कार्य को लागू करने वाली कमांड कैसे प्राप्त करें?


18

विंडोज टास्क मैनेजर में कमांड लाइन का एक कॉलम होता है जो कमांड को दिखाता है जो दिए गए कार्य को सभी स्विच और मापदंडों के साथ शुरू करता है, उदाहरण के लिए:

test.exe -V -A 127.0.0.1 -P 6062

अब मुझे एक निश्चित कार्य की पहचान करनी है जो एक निश्चित पोर्ट पर सुन रहा है और / या एक निश्चित स्विच संयोजन के साथ बुलाया गया था। मेरा उद्देश्य चयनित कार्य को बंद करना है, लेकिन दूसरों को नहीं, इसलिए यदि कई test.exeकार्य चल रहे हैं, तो मैं केवल दिए गए सभी कार्यों को बंद नहीं कर सकता:

tasklist /fo csv /nh /fi "imagename eq test.exe"

दुर्भाग्य से ऐसा लगता है कि न तो tasklistऔर न ही pslist( यहां ) कमांड लाइन क्षेत्र को वापस करने में सक्षम है । मैं कैसे इस समस्या को दूर कर सकते हैं?


हो सकता है कि आप netstat -aon | grep \.0:6062पोर्ट 6062 के साथ कुछ कर सकते हैं और अंतिम कॉलम आपके प्रोग्राम का पीआईडी ​​होगा। यकीन नहीं तो आपके लिए पर्याप्त है। tasklist /FI "PID eq <PID>"फिर से अपने निष्पादन योग्य देना होगा।
रिक डे

@ रिक सैडली, यह पर्याप्त नहीं है, क्योंकि पोर्ट ही सही कार्य की पहचान करने के लिए पर्याप्त नहीं है, इसलिए कमांड लाइन के तर्कों को भी देखना आवश्यक है।
इस्तवान ज़चार

एक ही बंदरगाह पर कई कार्यक्रमों को सुनने की कल्पना नहीं कर सकते ... :) लेकिन यह पैरामीटर प्राप्त करने के लिए संभव होना चाहिए ... process explorerSysinternals से इन gui में दिखा सकते हैं। तो जानकारी कहीं न कहीं होनी चाहिए।
रिक डिक

क्या आपके पास एक पॉवरशेल कमांड के लिए उपयोग है? जैसे <<< Get-WmiObject win32_process -Filter "नाम जैसे '% test.exe'" | क्रिएशनडेट, प्रोसेसआईड, कमांडलाइन चुनें | ft -AutoSize` >>> यहाँ
Rik

@ रिक, पोर्ट बेशक अलग है, लेकिन मुझे कमांड लाइन के तर्कों को यह भी जांचना होगा कि क्या कार्य वह है जिसे मुझे मारने की आवश्यकता है।
इस्तवान ज़ाचर

जवाबों:


35

इसके बारे में क्या खयाल है:

wmic process where caption="test.exe" get commandline

और अगर आप ऐसा करते हैं तो आपको मारने के लिए ProcessId भी मिलता है:

wmic process where caption="test.exe" get commandline,processid

wmicसीएसवी में आउटपुट के लिए एक स्विच भी है। इसलिए:

wmic /output:c:\temp\proc.csv process where caption="test.exe" get commandline,processid /format:csv

नोट: यदि आप पिछले एक के साथ कोई त्रुटि मिलती है ( Invalid XSL format (or) file name) आप कॉपी करने की जरूरत csv.xmlसे %WINDIR%\System32\wbem\en-USकरने के लिए %WINDIR%\System32\wbem। आप इस बग के बारे में यहां पढ़ सकते हैं ।


आप PowerShell का उपयोग भी कर सकते हैं:

Get-WmiObject win32_process -Filter "name like '%test.exe'"|select CreationDate,ProcessId,CommandLine|ft -AutoSize`

धन्यवाद, यही है, wmicसमस्या को हल करता है, और यह दिन समाप्त होता है। :)
इस्तवान ज़ाखर १५’१३

1
बिल्कुल सही - यह वास्तव में पूरी कमांड लाइन देता है। टास्क मैनेजर में, यह केवल पहले 300 अक्षर या तो दिखाता है।
आर्टऑफवर्फ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.