windows-7 - toda - windows 7 4gb ram 2 utilizable
¿Cómo verificar la memoria disponible(RAM) a través del script por lotes? (6)
Me gustaría saber cómo podemos verificar la memoria disponible en un script por lotes. ¿Hay algún método disponible? Si no es posible en el script por lotes, ¿hay alguna otra manera de que podamos obtener la memoria disponible?
Sistema operativo: Windows XP / Windows 7
Alternativa:
C:/>wmic os get freephysicalmemory
FreePhysicalMemory
4946576
analizar una variable (la salida wmic tiene un encabezado + línea adicional al final)
for /f "skip=1" %%p in (''wmic os get freephysicalmemory'') do (
set m=%%p
goto :done
)
:done
echo free: %m%
free: 4948108
( freevirtualmemory
está disponible también)
Este sitio tiene un ejemplo de VBScript que recupera la cantidad total de memoria:
http://www.computerperformance.co.uk/vbscript/wmi_memory.htm
Se puede adaptar para informar la cantidad de memoria disponible:
'' 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
Puede ejecutarlo guardándolo en un archivo con la extensión .vbs
(por ejemplo, memory.vbs
) y ejecutarlo con cscript.exe, por ejemplo:
cscript.exe //nologo memory.vbs
... para obtener resultados como:
Available memory bytes: 4481511424
Esto debería funcionar:
free_mem=`free | sed -n 2p | awk ''{print $4}''`
Eso te dará la memoria libre. Si quiere el total, obtenga la primera columna ($ 1).
Esto muestra la memoria disponible para scripts y programas por lotes:
>mem | find "total"
655360 bytes total conventional memory
1048576 bytes total contiguous extended memory
Tipo MEM /? para mas detalles
EDIT : respuesta al nuevo comentario
>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
WMIC
no está disponible en las ediciones Home / Basic / Starter de Windows. SYSTEMINFO
es demasiado lento. Alternativa con MSHTA
que debería funcionar en todos los sistemas de Windows:
for /f "usebackq" %%a in (`mshta ^"javascript^:close^(new ActiveXObject^(^''Scripting.FileSystemObject^''^).GetStandardStream^(1^).Write^(GetObject^(^''winmgmts:^''^).ExecQuery^(^''Select * from Win32_PerfFormattedData_PerfOS_Memory^''^).ItemIndex^(0^).AvailableBytes^)^);^"^|more`) do set free_mem=%%a
echo %free_mem%
Y para completar una forma más con dxdiag:
@echo off
taskkill /im dxdiag* /f
dxdiag /whql:off /t %cd%/dxdiag.txt
:ckeck_dx
tasklist | find "dxdiag" && ( w32tm /stripchart /computer:localhost /period:1 /dataonly /samples:5 >nul 2>&1 & goto :ckeck_dx )
find "Available OS Memory:" "dxdiag.txt"
del /q /f "%~dp0dxdiag.txt"
No estoy seguro acerca de Windows XP pero en Windows 7 podría usar el comando systeminfo
(externo), según esta pregunta de ServerFault . Excepto en mi computadora, ese comando muestra demasiada información, así que aquí puedes limitarlo solo a la parte relevante:
systeminfo | find "Physical Memory"
Lo anterior muestra los siguientes bits de información:
Total Physical Memory: n,nnn MB Available Physical Memory: n,nnn MB
Si solo desea la línea Available
, haga su búsqueda más específica:
systeminfo | find "Available Physical Memory"