在 Windows 中,終端機上列出的進程怎麼會這麼慢?這樣可以加快嗎?

在 Windows 中,終端機上列出的進程怎麼會這麼慢?這樣可以加快嗎?

我終於想出了這個命令:

tasklist /V /NH | find "test"

它列出了帶有“詳細”資訊的所有正在運行的進程(“視窗標題”是我們需要的,因此必須使用/V),跳過標題行,然後將其輸入“find”以僅匹配包含“ test」的進程「某處。

當我輸入此內容時,我意識到它會檢查任務清單輸出的整行中的任何位置是否有“test”,這不是意圖(它應該只檢查視窗標題部分),但這是次要的,因為實際上它永遠不會匹配,因為“test”實際上是一個帶有多個空格的字串,它不太可能出現在該行的其餘部分中。

不管怎樣,上面的命令實際上需要幾秒鐘的時間來運行,這並不是因為「尋找」的管道,因為我已經在沒有它的情況下嘗試過它。它只是在獲取這些資訊方面非常緩慢,而您認為這些資訊在 RAM 中很容易獲得,以至於您幾乎可以獲得答案發出命令,但顯然他們正在執行一些複雜的邏輯,這些邏輯似乎正在讀取大塊磁碟儲存。 (不然怎麼解釋每次載入的秒數?)

閱讀“任務清單”的手冊後,無法指定我只關心“視窗標題”,這就是我希望它輸出的所有內容(可能會更快)。

我確實注意到,如果您按特定的“圖像”(EXE)進行過濾,速度會快得多,但我不希望這樣做,因為這應該只檢查/關心“視窗標題”(也稱為“進程標題”) )。

有什麼好主意嗎?

答案1

您可以按視窗標題進行篩選/FI "WINDOWTITLE eq Window Name"。雖然速度並沒有快很多。

您可以使用 PowerShell 實現相同的目標,但速度要快得多:

get-process | where-object {$_.mainWindowTitle -like "test*"}

一秒鐘左右即可完成。

相關內容