Войти

Показать полную графическую версию : [решено] Как определить количество установленной памяти в ХР с помошью .cmd .bat?


xaosxaos
08-10-2009, 18:33
Как определить количество установленной памяти в ХР с помошью .cmd .bat? Или подскажите программу, которая это делает, и по весу минимальна. Благодарю.

amel27
09-10-2009, 00:55
@Echo Off

For /F "Tokens=1,2 Skip=1" %%i In (
'WMIC OS Get TotalVisibleMemorySize^,Version'
) Do If Not "%%j"=="" Set $MEM=%%i

Echo Total Physical Memory (Kb): %$MEM%
PAUSE

xaosxaos
09-10-2009, 01:16
amel27, благодарю, но wmic ещё нет при установки виндоус на Т39:(, а команда хороша:) попробую перенести на Т13,12,9. Не прошло.
А нету ли самостоятельной програмки не на основе WMI?

amel27
09-10-2009, 04:34
А нету ли самостоятельной програмки не на основе WMI? »
> SystemInfo /?
> PsInfo By Mark Russinovich (http://technet.microsoft.com/en-us/sysinternals/bb897550.aspx)
@Echo Off

For /F "Tokens=2 Delims=, " %%i In ('PsInfo -c Ph') Do Set $MEM=%%i
Echo Total Physical Memory (Mb): %$MEM%
PAUSE

Т13,12,9. Не прошло »
может форсировать установку?... =)
rundll32.exe setupapi,InstallHinfSection WBEM 132 %windir%\inf\wbemoc.inf

xaosxaos
09-10-2009, 11:47
> SystemInfo /?
> PsInfo By Mark Russinovich »
Попробуемс.
может форсировать установку?... »
Насколько я понял это не выйдет, так как оно устанавливается из sysoc, то есть до Т13. И для работы, требуется запуск службы, которые стартуют после перезагрузки.
PsInfo By Mark Russinovich »
При первом использование всплывает окошко, что очень не хорошо для автоматической установки:( Как заставить его не появляться не знаю.

Petya V4sechkin
09-10-2009, 14:19
При первом использование всплывает окошко, что очень не хорошо для автоматической установки Как заставить его не появляться не знаю.
Reg Add HKEY_CURRENT_USER\Software\Sysinternals\PsInfo /V EulaAccepted /T REG_DWORD /D 1 /F

megaloman
09-10-2009, 20:26
Вот VBS - скрипт
Comp = "."
Nsp = "Root\CIMV2"
Cl = "Win32_PhysicalMemory"
Mess = "Физическая память:" + vbCrLf

Set oCl = GetObject("WinMgmts:\\" + Comp + "\" + Nsp + ":" + Cl)
Set PM = oCl.Instances_

SumCapacity = 0

For Each oPM In PM
Mess = Mess + vbCrLf + "Bank Label: " + oPM.BankLabel + " Capacity: " + oPM.Capacity
SumCapacity = SumCapacity + oPM.Capacity
Next


MsgBox (Mess + vbCrLf + vbCrLf + " Суммарный объем: " + CStr(SumCapacity))

xaosxaos
09-10-2009, 22:08
megaloman, насколько я понял, то такое не прокатит, ну нету еще СОМ на этапе установки виндоус:) За скриптик благодарю, добавлю в копилку.

Идеально подошло следующее:

reg Add HKEY_CURRENT_USER\Software\Sysinternals\PsInfo /V EulaAccepted /T REG_DWORD /D 1 /F
for /f "tokens=2 delims=, " %%i in ('%systemroot%\system32\psinfo.exe -c "Physical memory"') do set memsize=%%i
for /f "tokens=2 delims=, " %%i in ('%systemroot%\system32\psinfo.exe -c Processors') do if not "%%i"=="1" echo %%i
Благодарю всех кто принял участие.

SharkyEXE
26-03-2017, 22:29
2 all

Всем здравствуйте.

Моя ОС: Microsoft Windows 7 Professional Service Pack 1 Russian x64
ОЗУ / RAM: 8 Гигабайт ( 1 шт планка на 4 Гигабайт + 1 шт планка на 4 Гигабайт )
UAC: выключен

Использую код: тынц (http://forum.oszone.net/post-1238122-4.html)
Использую PsInfo ( пробовал и PsInfo.exe , пробовал и PsInfo64.exe ): тынц (https://technet.microsoft.com/en-us/sysinternals/bb897550.aspx)
Мне выдается: Total Physical Memory (Mb): 4050

Вопрос: кто виноват и что делать? :-)

Спасибо.

Iska
26-03-2017, 23:23
Вопрос: кто виноват и что делать? :-) »
Начать с описания того, что Вам нужно.

SharkyEXE
27-03-2017, 08:29
Iska

Здравствуйте.

Мне хочется понять, почему при выполнении этого (http://forum.oszone.net/post-2723226-9.html) мне программа PsInfo выдает неправильное значение 4050 вместо 8000 или другое значение ( у меня установлено 8 Гигабайт оперативной памяти )

Спасибо.

Iska
27-03-2017, 09:15
Мне хочется понять, почему при выполнении этого мне программа PsInfo выдает неправильное значение 4050 вместо 8000 или другое значение ( у меня установлено 8 Гигабайт оперативной памяти ) »
Если б только это… Старая и известная проблема.

Я Вам задавал вопрос:
Начать с описания того, что Вам нужно. »
на который Вы дали совсем не тот ответ. Повторяю: зачем Вам нужно знать количество физической оперативной памяти? Для каких целей?

SharkyEXE
27-03-2017, 11:53
Iska

Здравствуйте.

Извините меня, пожалуйста, что я не правильно Вам написал.

Вот, смотрите.

У меня на стационарном компьютере установлено 8 Гигабайт оперативной памяти, то надо делать отключение файла подкачки по этому (http://forum.oszone.net/post-1640072-14.html) 100% рабочему методу

У меня на ноутбуке установлено 6 Гигабайт оперативной памяти, то не надо делать отключение файла подкачки по этому (http://forum.oszone.net/post-1640072-14.html) 100% рабочему методу

Вот и ищется способ/алгоритм/блок-схема проверки на количество оперативной памяти, мол:
если ОЗУ менее 8 Гигабайт, то не надо делать отключение файла подкачки по этому (http://forum.oszone.net/post-1640072-14.html) 100% рабочему методу
если ОЗУ более или равно 8 Гигабайт, то надо делать отключение файла подкачки по этому (http://forum.oszone.net/post-1640072-14.html) 100% рабочему методу

Спасибо.

Iska
28-03-2017, 06:03
SharkyEXE, начну с того, что я категорически не советую отключать файл подкачки и вообще как-то трогать его настройки по сравнению с умолчальными («отдать всё на откуп системе»).

Ну, а так можно попробовать такое:
Option Explicit

Const HKEY_LOCAL_MACHINE = &H80000002


Dim objSWbemLocator
Dim objSWbemObjectEx

Dim lngTotalVisibleMemorySize
Dim lngRetValue

Dim arrCurrPFRO


Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")

For Each objSWbemObjectEx In objSWbemLocator.ConnectServer(".", "root\cimv2").ExecQuery("SELECT TotalVisibleMemorySize FROM Win32_OperatingSystem")
lngTotalVisibleMemorySize = CLng(objSWbemObjectEx.TotalVisibleMemorySize)

Exit For
Next

If lngTotalVisibleMemorySize >= 8 * 2^20 Then
With objSWbemLocator.ConnectServer(".", "root\default").Get("StdRegProv")
If .SetMultiStringValue(HKEY_LOCAL_MACHINE, "system\currentcontrolset\control\session manager\memory management", "PagingFiles", Array()) = 0 Then
lngRetValue = .GetMultiStringValue(HKEY_LOCAL_MACHINE, "system\currentcontrolset\control\session manager", "PendingFileRenameOperations", arrCurrPFRO)

Select Case lngRetValue
Case 0, 2
If IsArray(arrCurrPFRO) Then
ReDim Preserve arrCurrPFRO(UBound(arrCurrPFRO) + 2)

arrCurrPFRO(UBound(arrCurrPFRO) - 1) = "\??\C:\pagefile.sys"
arrCurrPFRO(UBound(arrCurrPFRO)) = ""
Else
arrCurrPFRO = Array("\??\C:\pagefile.sys", "")
End If

If .SetMultiStringValue(HKEY_LOCAL_MACHINE, "system\currentcontrolset\control\session manager", "PendingFileRenameOperations", arrCurrPFRO) = 0 Then
' Nothing to do
Else
WScript.Echo "Can't set removing file [C:\pagefile.sys] after restart operating system."
WScript.Quit 3
End If
Case Else
WScript.Echo "Can't read current pending file rename operations."
WScript.Quit 2
End Select
Else
WScript.Echo "Can't disable usage of paging file."
WScript.Echo 1
End If
End With
End If

Set objSWbemLocator = Nothing

WScript.Quit 0

Обязательно предварительно сделайте точку восстановления, а лучше — резервную копию реестра. Удаление файла подкачки производится в момент начальной загрузки операционной системы таким вот образом: Ключ реестра PendingFileRenameOperations (http://hex.pp.ua/PendingFileRenameOperations.php). Память для сравнения берётся не физически установленная, а доступная для использования (.TotalVisibleMemorySize) — я думаю, так будет правильнее (подсмотрел у коллеги greg zakharov).

Если отработает корректно — я хотел бы потом ещё добавить кое-что, дабы не тупо задавать C:\pagefile.sys, а реальные местоположения используемых файлов подкачки (он ведь может быть не на C:\, и их может быть и несколько).

SharkyEXE
28-03-2017, 06:25
Iska

Здравствуйте.

А как мне проверить Ваш код (http://forum.oszone.net/post-2723647-14.html),е сли у меня файл подкачки уже отключен?

В плане, включить файл подкачки снова, на диске C, размер отдать на выбор системе, праивльно?

Iska
28-03-2017, 07:30
А как мне проверить Ваш код,е сли у меня файл подкачки уже отключен? В плане, включить файл подкачки снова, на диске C, размер отдать на выбор системе, праивльно? »
Да. Включить, согласиться на перезагрузку. Попробовать исполнить скрипт. Снова перезагрузить ОС (уже самостоятельно). Посмотреть настройки файла подкачки и наличие файла подкачки.

Мне, кстати, помнится, несколько лет назад уже мы что-то вроде как то ли делали, то ли пробовали делать наподобие этого.

Update: воистину — «старею, дурею…» :(:
CMD/BAT - [решено] отключение файла подкачки (http://forum.oszone.net/thread-202204.html)
CMD/BAT - [решено] Отключение файла подкачки XP из BAT-ника (http://forum.oszone.net/thread-265578.html)
VBS/WSH/JS - [решено] Изменение размера файла подкачки (http://forum.oszone.net/thread-194730.html)
— и не надо никаких лишних игр с реестром.

SharkyEXE
28-03-2017, 08:24
Iska

Здравствуйте.

Вопросов нет, как 100%но отключить файл подкачки - этот способ 100%но работает: сюда (http://forum.oszone.net/post-1640072-14.html)

Однако вопрос только в том, как сделать проверку:
если ОЗУ менее 8 Гигабайт, то не надо делать отключение файла подкачки
если ОЗУ более или равно 8 Гигабайт, то надо делать отключение файла подкачки

Iska
28-03-2017, 23:57
SharkyEXE, я привёл Вам код для WSH.




© OSzone.net 2001-2012