2017-07-03 16 views
0

內使用批處理文件的RAM我想創建一個批處理文件運行時顯示在窗口的標題使用它的內存(RAM)。當執行WMIC命令時,它顯示錯誤消息,我曾嘗試使用WMIC命令,但它不工作如何得到相同的批處理文件

:START 
cls 
set /A exe_count=%exe_count%+1 
set /A mem_usage="wmic process where name='kill_tasks.bat' get WorkingSetSize | findstr /r "^[1-9][0-9]*"" 
title task kill -- execution count: %exe_count%, mem: %mem_usage% 
<Other codes> 
SLEEP 30 
GOTO START 

下面的代碼:

missing operator

,窗口的標題是

task kill -- execution count: 1, mem: 0

如果我在批處理文件開始運行後,在新的命令提示符窗口中單獨運行wmic命令,它將顯示錯誤:

No Instance(s) Available.

+1

這似乎是一個毫無意義的練習來確定文件本身的數據。一旦你開始檢查將提高價值,你的價值便會反映檢查機制,而不是批處理文件的實際過程。 – Compo

回答

0

正如的WMIC怎麼也不會爲您提供一個準確的數字,或可能一個可以信任,看看下面的例子腳本的例子:

@Echo Off 
For /F "Delims=" %%A In (' 
    "WMIC Process Where (Name='cmd.exe') Get CommandLine, WorkingSetSize|Find /I %0" 
') Do For /F Tokens^=4Delims^=^" %%B In ("%%A") Do For %%C In (%%B) Do Echo([%%C] 
Timeout -1 

你將注意到,有兩個輸出,一個從腳本的初始invokation和另一個來自WMIC命令部分。我最初的想法是,第一張圖是兩個,因此,你需要一個的小。不幸的是,雖然這個數字並不總是較小,並且可能不是您需要的。

這也是值得銘記在內置如FIND.EXE命令頭腦和timeout.exe將每個可能註冊一個不同的人物外部的批處理文件,因此不包括在其中的任意一種返回數字。

編輯

下面是忽略上面的建議,節省了工作集大小設置爲%WSS%版本。

@Echo Off 
Set "WSS=" 
For /F "Delims=" %%A In (' 
    "WMIC Process Where (Name='cmd.exe') Get CommandLine, WorkingSetSize|Find /I %0" 
') Do For /F Tokens^=4Delims^=^" %%B In ("%%A") Do For %%C In (%%B 
) Do If Not Defined WSS Set "WSS=%%C" 
Echo([%WSS%] 
Timeout -1 
相關問題