差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
windowsbatch:killprocwithcli [2013/07/30 13:08] tony |
windowsbatch:killprocwithcli [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
- | {{tag>WindowsBatch}} | + | {{tag>WindowsBatch wmic}} |
====== 如何根據CommandLine去砍掉你要砍的行程? ====== | ====== 如何根據CommandLine去砍掉你要砍的行程? ====== | ||
===== 源起 ===== | ===== 源起 ===== | ||
行 114: | 行 114: | ||
==== 解決findstr出現line xx is too long的問題 ==== | ==== 解決findstr出現line xx is too long的問題 ==== | ||
由於findstr長度限制為127個字元,假如commandline很長,wmic後的結果一定會有問題。一開始想透過find解決這個問題,但使用後發現難以產生期望輸出。最後是透過WQL去針對commandline與name欄位做過濾,在執行完wmic後,一樣透過findstr去找尋預期程序開頭的行,然後取pid。另外我有針對輸入參數做判斷,程序名稱不得為空,而commandline如果為空就會去砍掉所有輸入名稱的程序。(程序名稱為空會砍掉所有的..) | 由於findstr長度限制為127個字元,假如commandline很長,wmic後的結果一定會有問題。一開始想透過find解決這個問題,但使用後發現難以產生期望輸出。最後是透過WQL去針對commandline與name欄位做過濾,在執行完wmic後,一樣透過findstr去找尋預期程序開頭的行,然後取pid。另外我有針對輸入參數做判斷,程序名稱不得為空,而commandline如果為空就會去砍掉所有輸入名稱的程序。(程序名稱為空會砍掉所有的..) | ||
- | <code bash> | + | <file bash killProc.bat> |
@echo off | @echo off | ||
setlocal enabledelayedexpansion | setlocal enabledelayedexpansion | ||
行 136: | 行 136: | ||
taskkill /f /pid !!last! | taskkill /f /pid !!last! | ||
) | ) | ||
- | </code> | + | </file> |
其它所作的內容就不贅述了,真的有問題再來問我吧!\\ | 其它所作的內容就不贅述了,真的有問題再來問我吧!\\ | ||
行 145: | 行 145: | ||
===== Reference ===== | ===== Reference ===== | ||
* [[https://groups.google.com/forum/#!topic/alt.msdos.batch.nt/n36VGULacVU|findstr目標字串長度過長問題]] | * [[https://groups.google.com/forum/#!topic/alt.msdos.batch.nt/n36VGULacVU|findstr目標字串長度過長問題]] | ||
+ | * [[http://cnkmym.blogspot.tw/2011/10/why-java-hang-when-invoking-wmic.html|Why java hang when invoking wmic?]] | ||
===== 後記 ===== | ===== 後記 ===== | ||
* 2012-09-18 實際使用遇到了block問題。原因是因為透過java程式呼叫時,WMIC其標準輸入導致block,google可以找到相關資訊。最後透過ant呼叫解決。 | * 2012-09-18 實際使用遇到了block問題。原因是因為透過java程式呼叫時,WMIC其標準輸入導致block,google可以找到相關資訊。最後透過ant呼叫解決。 | ||
* 2013-07-30 遇到findstr去過濾process command line長度過長問題。改透過WQL去做filter解決。 | * 2013-07-30 遇到findstr去過濾process command line長度過長問題。改透過WQL去做filter解決。 | ||
+ | * 2013-08-08 找到解決在Windows2003中,透過java程式呼叫wmic block的問題。在command line最後加入<NUL即可解決。Exmaple. wmic xxx ^^^<NUL ^^^| findstr xxxx | ||
===== ===== | ===== ===== | ||
---- | ---- | ||
\\ | \\ | ||
~~DISQUS~~ | ~~DISQUS~~ |