Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как определить количество установленной памяти в ХР с помошью .cmd .bat? (http://forum.oszone.net/showthread.php?t=152670)

xaosxaos 08-10-2009 18:33 1237836

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

amel27 09-10-2009 00:55 1238042

Код:

@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 1238062

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

amel27 09-10-2009 04:34 1238122

Цитата:

Цитата xaosxaos
А нету ли самостоятельной програмки не на основе WMI? »

> SystemInfo /?
> PsInfo By Mark Russinovich
Код:

@Echo Off

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

Цитата:

Цитата xaosxaos
Т13,12,9. Не прошло »

может форсировать установку?... =)
Код:

rundll32.exe setupapi,InstallHinfSection WBEM 132 %windir%\inf\wbemoc.inf

xaosxaos 09-10-2009 11:47 1238310

Цитата:

Цитата amel27
> SystemInfo /?
> PsInfo By Mark Russinovich »

Попробуемс.
Цитата:

Цитата amel27
может форсировать установку?... »

Насколько я понял это не выйдет, так как оно устанавливается из sysoc, то есть до Т13. И для работы, требуется запуск службы, которые стартуют после перезагрузки.
Цитата:

Цитата amel27
PsInfo By Mark Russinovich »

При первом использование всплывает окошко, что очень не хорошо для автоматической установки:( Как заставить его не появляться не знаю.

Petya V4sechkin 09-10-2009 14:19 1238475

Цитата:

Цитата xaosxaos
При первом использование всплывает окошко, что очень не хорошо для автоматической установки Как заставить его не появляться не знаю.

Код:

Reg Add HKEY_CURRENT_USER\Software\Sysinternals\PsInfo /V EulaAccepted /T REG_DWORD /D 1 /F

megaloman 09-10-2009 20:26 1238848

Вот 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 1238926

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 2723226

2 all

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

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

Использую код: тынц
Использую PsInfo ( пробовал и PsInfo.exe , пробовал и PsInfo64.exe ): тынц
Мне выдается: Total Physical Memory (Mb): 4050

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

Спасибо.

Iska 26-03-2017 23:23 2723241

Цитата:

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

Начать с описания того, что Вам нужно.

SharkyEXE 27-03-2017 08:29 2723301

Iska

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

Мне хочется понять, почему при выполнении этого мне программа PsInfo выдает неправильное значение 4050 вместо 8000 или другое значение ( у меня установлено 8 Гигабайт оперативной памяти )

Спасибо.

Iska 27-03-2017 09:15 2723305

Цитата:

Цитата SharkyEXE
Мне хочется понять, почему при выполнении этого мне программа PsInfo выдает неправильное значение 4050 вместо 8000 или другое значение ( у меня установлено 8 Гигабайт оперативной памяти ) »

Если б только это… Старая и известная проблема.

Я Вам задавал вопрос:
Цитата:

Цитата Iska
Начать с описания того, что Вам нужно. »

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

SharkyEXE 27-03-2017 11:53 2723381

Iska

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

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

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

У меня на стационарном компьютере установлено 8 Гигабайт оперативной памяти, то надо делать отключение файла подкачки по этому 100% рабочему методу

У меня на ноутбуке установлено 6 Гигабайт оперативной памяти, то не надо делать отключение файла подкачки по этому 100% рабочему методу

Вот и ищется способ/алгоритм/блок-схема проверки на количество оперативной памяти, мол:
Код:

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

Спасибо.

Iska 28-03-2017 06:03 2723647

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. Память для сравнения берётся не физически установленная, а доступная для использования (.TotalVisibleMemorySize) — я думаю, так будет правильнее (подсмотрел у коллеги greg zakharov).

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

SharkyEXE 28-03-2017 06:25 2723649

Iska

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

А как мне проверить Ваш код,е сли у меня файл подкачки уже отключен?

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

Iska 28-03-2017 07:30 2723654

Цитата:

Цитата SharkyEXE
А как мне проверить Ваш код,е сли у меня файл подкачки уже отключен? В плане, включить файл подкачки снова, на диске C, размер отдать на выбор системе, праивльно? »

Да. Включить, согласиться на перезагрузку. Попробовать исполнить скрипт. Снова перезагрузить ОС (уже самостоятельно). Посмотреть настройки файла подкачки и наличие файла подкачки.

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

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

SharkyEXE 28-03-2017 08:24 2723662

Iska

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

Вопросов нет, как 100%но отключить файл подкачки - этот способ 100%но работает: сюда

Однако вопрос только в том, как сделать проверку:
Код:

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


Iska 28-03-2017 23:57 2723914

SharkyEXE, я привёл Вам код для WSH.


Время: 16:19.

Время: 16:19.
© OSzone.net 2001-