2017-07-03 14 views
0

実行時にウィンドウのタイトルに使用されるメモリ(RAM)が表示されるバッチファイルを作成したいとします。私は、WMICコマンドを使用して、次のコードを試してみましたが、そのは同じバッチファイル内のバッチファイルで使用されるRAMを取得する方法

: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 

WMICコマンドが実行されると、それはエラーメッセージを示して機能していない:

missing operator

を、ウィンドウのタイトルは

だろうが

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

バッチファイルの実行が開始された後に新しいコマンドプロンプトウィンドウでwmicコマンドを別々に実行すると、エラーが表示されます。

012ただ、WMICは、次の例のスクリプトを見て、あなたはを信頼することができ、正確な数字で または多分1をあなたに提供することはありません方法の例として

No Instance(s) Available.

+1

ファイル内のデータを判断するのは無意味なようです。チェックを開始するとすぐに値が上がります。バッチファイルの実際の処理ではなく、チェックメカニズムが反映されます。 – Compo

答えて

0

@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 

ます2つの出力があることがわかります.1つはスクリプトの最初の呼び出しであり、もう1つはWMICコマンドの部分です。私の最初のアイデアは、最初の人物が2人のうち小さい方であり、したがってあなたが必要とする人物であるということでした。残念ながら、この数字は必ずしも小さくはないので、あなたが必要とする数字ではないかもしれません。

find.exeやtimeout.exeなどの組み込みコマンドは、おそらくバッチファイルの外部に別のFigureを登録するため、返された数字のいずれにも含まれないことに注意してください。以下は

編集

上記のアドバイスを無視し、%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 
関連する問題