バッチ スクリプトで使用可能なメモリを確認する方法を教えてください。すでに利用可能な方法はありますか?バッチ スクリプトでそれができない場合、使用可能なメモリを取得する他の方法はありますか?
OS: Windows XP / Windows 7
バッチ スクリプトで使用可能なメモリを確認する方法を教えてください。すでに利用可能な方法はありますか?バッチ スクリプトでそれができない場合、使用可能なメモリを取得する他の方法はありますか?
OS: Windows XP / Windows 7
別:
C:\>wmic os get freephysicalmemory
FreePhysicalMemory
4946576
変数に解析します(wmic出力には、ヘッダーと末尾に余分な行があります)
for /f "skip=1" %%p in ('wmic os get freephysicalmemory') do (
set m=%%p
goto :done
)
:done
echo free: %m%
free: 4948108
(freevirtualmemory
もご利用いただけます)
このサイトには、メモリの総量を取得するサンプル VBScript があります。
http://www.computerperformance.co.uk/vbscript/wmi_memory.htm
利用可能なメモリ量を報告するように適合させることができます。
' Memory.vbs
' Sample VBScript to discover how much RAM in computer
' Author Guy Thomas http://computerperformance.co.uk/
' Version 1.3 - August 2010
' -------------------------------------------------------'
Option Explicit
Dim objWMIService, perfData, entry
Dim strLogonUser, strComputer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set perfData = objWMIService.ExecQuery _
("Select * from Win32_PerfFormattedData_PerfOS_Memory")
For Each entry in perfData
Wscript.Echo "Available memory bytes: " & entry.AvailableBytes
Next
WScript.Quit
拡張子.vbs
(例: memory.vbs
) を付けてファイルに保存し、cscript.exe で実行することで実行できます。例:
cscript.exe //nologo memory.vbs
...次のような出力を取得するには:
Available memory bytes: 4481511424
Windows XPについてはよくわかりませんが、Windows 7では、このServerFaultの質問systeminfo
に従って、(外部)コマンドを使用できます。私のコンピューターを除いて、そのコマンドはあまりにも多くの情報を表示したので、関連する部分だけに制限する方法は次のとおりです。
systeminfo | find "Physical Memory"
上記は、次の情報を表示します。
合計物理メモリ: n、nnn MB 使用可能な物理メモリ:n、nnn MB
行だけが必要な場合はAvailable
、検索をより具体的にします。
systeminfo | find "Available Physical Memory"
これは、バッチ スクリプトとプログラムに使用可能なメモリを示しています。
>mem | find "total"
655360 bytes total conventional memory
1048576 bytes total contiguous extended memory
MEM /? と入力します。詳細については
編集:新しいコメントへの回答
>mem | find "avail"
655360 bytes available to MS-DOS
0 bytes available contiguous extended memory
941056 bytes available XMS memory
>mem
655360 bytes total conventional memory
655360 bytes available to MS-DOS
599312 largest executable program size
1048576 bytes total contiguous extended memory
0 bytes available contiguous extended memory
941056 bytes available XMS memory
MS-DOS resident in High Memory Area
これはうまくいくはずです:
free_mem=`free | sed -n 2p | awk '{print $4}'`
これにより、空きメモリが得られます。合計が必要な場合は、最初の列 ($1) を取得します。