在论坛上求助,加上到处百度资料,终于七拼八凑出可以用的文件,但实在太混乱了,所以想请哪位高手优化一下。
代码的含义:当1.exe存在时,vbs文件以1秒的速度,把可用内存数写入mem.txt文件。当1.exe不存在时,终止脚本文件。
代码如下,很混乱的,我对这个一窍不通,麻烦大家了,谢谢。
另外,我现在是用taskkill终止,我想用vbs自身的来终止,可是不知怎么写,麻烦给改一下。
很混乱的,也许你们能看懂吧,呵呵……
现在还有个讨厌的问题,脚本文件调动的是wmiprvse.exe文件,这个文件似乎不能用脚本终止。导致一堆wmiprvse文件出现……不知如何解决这个问题……
;这个创建mem.txt文件,但后面也有创建的,不知道是什么意思,也许无用?
Set objShell = CreateObject("Wscript.Shell")
Sub writefile(detail)
set fs=CreateObject("Scripting.FileSystemObject")
set file=fs.CreateTextFile("R:\temp\mem.txt",flase)
file.Write detail
file.Close
set fs=nothing
End Sub
;这个是论坛上everest79大侠给我的代码,取得可用内存数,也感谢一下他……
Function Available
Dim wmi
Set wmi=GetObject("winmgmts:\\.\root\cimv2")
Set ref=wmi.ExecQuery("Select * From Win32_PerfFormattedData_PerfOS_Memory")
For Each x In ref
Available=x.AvailableBytes/1024
Next
End Function
;这个是不断把文件复写入mem.txt
Const ForWriting = 2
Set objFSO=CreateObject("Scripting.FileSystemObject")
objFSO.CreateTextFile("R:\temp\mem.txt")
Do
dim OK,oShell
OK=False
set bag=getobject("winmgmts:\\.\root\cimv2")
set pipe=bag.execquery("select * from win32_process where name='1.exe'")
;这个是如果1.exe不存在,就终止脚本
For Each id In pipe
OK = True
Next
If not OK Then
Set wshShell = WScript.CreateObject("WScript.Shell")
wshShell.run "TASKKILL /im Wscript.exe /f",0
wshShell.run "TASKKILL /im Wmiprvse.exe /f",0
end if
Set objFile=objFSO.OpenTextFile("R:\temp\mem.txt", ForWriting)
objFile.Write Available
objFile.Close
WScript.Sleep(500)
Set Of = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Loop
───────────────── 版务记录 ─────────────────
执行:HAT
操作:在帖子标题中增加搜索关键字;代码加code标签
说明:原标题"那位能帮我优化一下vbs脚本代码,谢谢了"不利于论坛搜索
处罚:扣除2点积分
提示:建议阅读以下帖子
{1415}提问的智慧
{7326}论坛新手必读,所有人的基本行为准则
{22703}请不要做浮躁的人
{32667}那些连标题都写不清楚的人们啊,你们醒醒吧
{32825}本版严厉整顿烂帖
───────────────── 版务记录 ─────────────────
Last edited by wl00560 on 2008-12-16 at 16:39 ]