标题: VBS脚本设置虚拟内存大小和位置
作者: Demon
链接: https://demon.tw/copy-paste/vbs-pagefilesetting.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
VBS脚本设置虚拟内存(页面文件)大小和位置。
'VBS脚本设置虚拟内存(页面文件)大小和位置 'VBScript Change the Size and Location of PageFile. 'By powerbat @ www.bathome.net 批处理之家 Dim objWMIService, MemSize, objOS, ver, objCS, AutomaticManagedPagefile Dim Drive, MinSize, MaxSize, strReboot strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate, (CreatePagefile, Shutdown)}!\\" _ & strComputer & "\root\cimv2") MemSize = 0 Set colMemory = OBJWMIService.Get("Win32_PhysicalMemory").Instances_() for each objMemory in colMemory MemSize = MemSize + objMemory.Capacity next MemSize = MemSize / 1024^2 'in units of MB Set colOS = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Each objOS in colOS SystemDrive = objOS.SystemDrive ver = objOS.Version Exit For 'Reserve object for subsequent use. Next Drive = Left(SystemDrive, 1) MinSize = Fix(MemSize*1.5) MaxSize = Fix(MemSize*2) strReboot = "ask" AutomaticManagedPagefile = False if ver > "6" then Set colCS = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem") For Each objCS in colCS AutomaticManagedPagefile = objCS.AutomaticManagedPagefile Exit For 'Reserve object for subsequent use. Next end if if WScript.Arguments.length then Set ArgsNamed = WScript.Arguments.Named if Not ArgsNamed.Exists("drive") then Command = "cscript " & WScript.ScriptName & " " WScript.Echo "Usage:" WScript.Echo Command & "/drive:<DriveLetter> " _ & "/min:<Num or Ratio> /max:<Num or Ratio> /r:<yes|no|ask>" WScript.Echo "Example: " WScript.Echo Command & "/drive:c /min:1 /max:2 /r:yes" WScript.Echo Command & "/drive:d /min:1.5 /max:768 /r:no" WScript.Echo Command & "/drive:e /min:512 /max:2 /r:ask" WScript.Echo Command & "/drive:f /min:512 /max:768 /r:ask" WScript.Quit end if Drive = ArgsNamed.Item("drive") if ArgsNamed.Exists("min") then MinSize = Left(ArgsNamed.Item("min"), 1) if CDbl(MinSize)<10 then MinSize = MemSize * MinSize end if if ArgsNamed.Exists("max") then MaxSize = ArgsNamed.Item("max") if CDbl(MaxSize)<10 then MaxSize = MemSize * MaxSize end if if ArgsNamed.Exists("r") then strReboot = ArgsNamed.Item("r") end if call SetPageFile() WScript.Quit end if CurrentSettings = "检测到物理内存大小为 " & MemSize & " MB。" & vbCrLf & vbCrLf CurrentSettings = CurrentSettings & "当前虚拟内存为" if AutomaticManagedPagefile then CurrentSettings = CurrentSettings & "系统自动管理大小:" else CurrentSettings = CurrentSettings & "自定义大小:" end if CurrentSettings = CurrentSettings & vbCrLf & "页面文件位置 " _ & vbTab & "最小" & vbTab & "最大" & vbCrLf Set colPageFiles = objWMIService.ExecQuery(_ "Select * from Win32_PageFileSetting") For Each objPageFile in colPageFiles CurrentSettings = CurrentSettings _ & objPageFile.Name & vbTab & objPageFile.InitialSize _ & vbTab & objPageFile.MaximumSize & vbCrLf Next CurrentSettings = CurrentSettings & vbCrLf & "是否修改?" & vbCrLf ans = msgbox(CurrentSettings, vbQuestion+vbYesNo, "批处理之家vbs脚本") if ans <> vbYes then WScript.Quit DiskInfo = "分区信息:" & vbCrLf DiskInfo = DiskInfo & "盘符" & vbTab & "容量GB" & vbTab & "可用空间GB" & vbCrLf Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk "_ & " where DriveType='3'") for each objDisk in colDisks DiskInfo = DiskInfo & objDisk.Caption & vbTab _ & Round(objDisk.Size/1024^3, 2) & vbTab _ & Round(objDisk.FreeSpace/1024^3, 2) & vbCrLf next Drive = InputBox(DiskInfo & vbCrLf & "虚拟内存放置在哪个盘?(输入一个字母)", _ "批处理之家vbs脚本", Drive) Drive = Left(Drive, 1) ans = msgbox("虚拟内存设置信息,是否确认?" & vbCrLf & vbCrLf & _ Drive & vbTab & MemSize & "*1.5 = " & MinSize & vbTab _ & MemSize & "*2 = " & MaxSize, _ vbYesNo+vbQuestion, "批处理之家vbs脚本") if ans <> vbYes then WScript.Quit SetPageFile Sub SetPageFile() if ver > "6" then If AutomaticManagedPagefile Then objCS.AutomaticManagedPageFile = False objCS.Put_() End If end if Set colPageFiles = objWMIService.ExecQuery(_ "Select * from Win32_PageFileSetting") For Each objPageFile in colPageFiles objPageFile.Delete_() Next Set objPageFile = objWMIService.Get(_ "Win32_PageFileSetting").SpawnInstance_() objPageFile.Name = Drive & ":\pagefile.sys" objPageFile.InitialSize = MinSize objPageFile.MaximumSize = MaxSize objPageFile.Put_() If InStr(1,strReboot,"y",1) then objOS.Reboot() elseif InStr(1,strReboot,"a",1) then ans = msgbox("设置完成,是否重启?", _ vbQuestion+vbYesNo, "批处理之家vbs脚本") if ans = vbYes then objOS.Reboot() else 'not reboot end if End Sub
原文链接:http://bbs.bathome.net/viewthread.php?tid=15768
赞赏微信赞赏支付宝赞赏
随机文章: