0

以下のコードを使用して、workSetSize をバイト単位で取得しています。

@echo off
setlocal enabledelayedexpansion

(For /F "delims=" %%A in ('"wmic process where Caption='Notepad.exe' get  ProcessId,WorkingSetSize /format:Texttable |findstr "[0-9P]" "') do (
set "line=%%A"
echo !line:~0,-1!
))>out.txt

上記のコードでこのメモリを KB 単位で取得できますか?

EDIT1:

私はコードを次のように変更しました:

@echo off
setlocal enabledelayedexpansion
(For /F "delims=" %%A in ('"wmic process where Caption='Notepad.exe' get      ProcessId,WorkingSetSize /format:Texttable |findstr "[0-9P]" "') do (
set "mem=%%B"
set /a mem=mem/1024
echo %%A !mem! 
))>out.txt

出力を次のように取得します。

ProcessId  WorkingSetSize  0 
5816       9142272         0 
5246       5673423         0 

しかし、私はそれらの0を望んでいません。以下のようなものだけが必要です:

ProcessId  WorkingSetSize  
5816       9142272        
5246       5673423         

EDIT2

以下のコードを使用している場合:

@echo off
setlocal enabledelayedexpansion
(For /F "tokens=1,2" %%A in ('"wmic process where Caption='Notepad.exe' get   ProcessId,WorkingSetSize /format:Texttable |findstr "[0-9P]" "') do (
set "mem=%%B"
set /a mem=mem/1024
echo %%A !mem! 
))>new.txt

出力は次のようになります。

ProcessId 0 
5216      6112 
1152      6524 
4

1 に答える 1

1

数値が常に 2 GB 未満になる場合は、これを使用できます

@echo off
setlocal enabledelayedexpansion
(For /F "tokens=1,2" %%A in ('"wmic process where Caption='HsvDataSource.exe' get  ProcessId,WorkingSetSize /format:Texttable |findstr "[0-9]" "') do (
set "mem=%%B"
set /a mem=mem/1024
echo PID:%%A %%B=!mem! KB
))>out.txt

上記のEDIT2の解決策

@echo off
setlocal enabledelayedexpansion
>new.txt echo ProcessId  WorkingSetSize
(For /F "tokens=1,2" %%A in ('"wmic process where Caption='Notepad.exe' get   ProcessId,WorkingSetSize /format:Texttable |findstr "[0-9]" "') do (
set "mem=%%B"
set /a mem=mem/1024
echo %%A !mem! 
))>>new.txt
于 2013-10-23T09:37:06.407 に答える