用VBS解压ZIP文件,网上搜到的多数是调用WinRAR,一点技术含量也没有。Google一下“VBS 解压ZIP”,第二是搜搜问问“vbs实现解压缩zip文件”,满意答案是“所以想用vbs来解压这两种格式的文件,至少要有两种命令行解压工具,否则是绝对不可以的”。绝对不可以的,回答的人好自信啊,笑而不语~
(更多…)文章关键字 ‘VBScript’
用VBS解压缩ZIP文件
2010年12月13日,星期一WMI中的Win32_PingStatus类
2010年12月8日,星期三平时很少用到ping命令,所以这个类也没怎么用过,测试了一下,好像效率比ping要高。计算ping 100次demon.tw延迟的平均值。
IP = "demon.tw" WQL = "Select * from Win32_PingStatus Where Address = '$IP'" WQL = Replace(WQL,"$IP",IP) n = 0 : s = 0 Do Until n = 100 Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery(WQL,,48) For Each objItem in colItems If objItem.StatusCode = 0 Then s = s + objItem.ResponseTime n = n + 1 End If Next Loop WScript.Echo "Average:" & s / n
伪造电子邮件发送时间
2010年12月6日,星期一今天发短信问同学才知道经济法(开学到现在只去过两次)有小论文布置,而且老师要求在12月3日之前把论文的电子版发到他的邮箱,否则平时成绩按0分处理。
天啊,今天可是12月6日!平时成绩可是30分啊!没有平时成绩的话基本是不可能及格了!怎么办?根据爱因斯坦的相对论,时间是不可能倒流的,但是这并不表示我们不能向“过去”发邮件。在网络的世界,时间只不过是0和1罢了。
Const Email_From = "still.demon@gmail.com" Const Password = "password" Const Email_To = "jingjifa@163.com" '只是假想的邮箱 Set CDO = CreateObject("CDO.Message") CDO.Subject = "From The Future" CDO.From = Email_From CDO.To = Email_To CDO.TextBody = "Hello world!" Const schema = "http://schemas.microsoft.com/cdo/configuration/" With CDO.Configuration.Fields .Item(schema & "sendusing") = 2 .Item(schema & "smtpserver") = "smtp.gmail.com" .Item(schema & "smtpauthenticate") = 1 .Item(schema & "sendusername") = Email_From .Item(schema & "sendpassword") = Password .Item(schema & "smtpserverport") = 465 .Item(schema & "smtpusessl") = True .Item(schema & "smtpconnectiontimeout") = 60 .Update End With CDO.Send
把系统时间改成12月3日,用上面的代码发送邮件(理论上用邮件客户端也行,但是我没有测试),在163邮箱显示的发送时间是12月3日哦。幸好老师的邮箱是163的~
TLI.TLIApplication,被遗忘的COM组件
2010年12月5日,星期日TLI.TLIApplication是一个能获取COM组件Type Library Information(类型库信息)的COM组件。曾经一直很好奇VbsEdit的代码自动补全是怎么实现的,现在看来,大约的确用的就是这个COM。
比如我想知道scrrun.dll(提供fso对象的dll)这个COM组件提供了哪些接口,可以用下面的代码:
'By Demon 'https://demon.tw Set tli = CreateObject("TLI.TLIApplication") Set Info = tli.TypeLibInfoFromFile("scrrun.dll") For Each Interface In Info.Interfaces WScript.Echo Interface.Name Next
或者我忘记了fso对象有哪些属性和方法,而又没有参考文档,可以用下面的代码:
'By Demon 'https://demon.tw Dim fso Set fso = CreateObject("scripting.filesystemobject") Set tli = CreateObject("TLI.TLIApplication") Set Info = tli.ClassInfoFromObject(fso) For Each Member In Info.DefaultInterface.Members WScript.Echo Member.Name Next
时间和篇幅有限,举的例子比较简单,更详细的请查阅文档(参考链接2为下载地址)。
参考链接:
用VBS创建环境变量
2010年12月3日,星期五今天和一个高手讨论了一下WMI里WQL查询的时间问题,无果。Google时无意中搜到这段代码,mark一下。
strComputer = "." Set objWMIService = GetObject _ ("winmgmts:\\" & strComputer & "\root\cimv2") Set objVariable = objWMIService._ Get("Win32_Environment").SpawnInstance_ objVariable.Name = "TestValue" objVariable.UserName = "System" objVariable.VariableValue = "This is a test" objVariable.Put_
参考链接:如何使用脚本创建环境变量?