tempuser
高级用户
积分 547
发帖 261
注册 2006-4-15
状态 离线
|
『楼 主』:
有些乱,脚本学习笔记
2008-1-31 zougk学习之旅
补:
1.在CMD下用cscritp 脚本文件全称,是“命令行解释执行脚本文件的意思吗?”
解:Windows有cscript和wscript两种解释器,在CMD下执行命令时用cscript说明当前是用cscript解释命令的执行。
2.既然VBS和JS对Windows产品有很好的脚本管理能力,为什么还要有PowerShell?
解:更重要的是产品的商业推广,其次才是功能的增强。因为前者对UNIX等系统的支持跨度太大或不兼容,而PowerShell对WINDOWS还是第三方OS都能很好的支持。
前提要求:
1、必须要熟悉网页制作流程,既熟练掌握网页制作工具,如frontpage和dreamweaver等;
2、 了解HTML。
语言发展史:
机器语言(面向电路的语言)-》汇编语言(又称助记符语言,是面向CPU的语言,需编译执行)-》面向过程的语言(又称高级语言,特点是“对硬件透明,但不适合大规模程序开发,如C,Basic等)-》面向对象的语言(如V++,VB等)
VB语言即可编译执行,也可解释执行。
编译:将所有程序代码编译成可执行程序.exe,整体执行,编译后可脱离原有编程环境。
解释:一条一条语句解释执行,不能脱离原有编程环境。
第一节 基础知识
1、ASP(Active Server Pages)动态网页
ASP是一种脚本编写的环境,不是一种脚本语言。
ASP可以和其它脚本混合编写,但如果同一页面既有HTML又有ASP代码,命名后缀是.ASP,如果是.HTML,ASP代码得不到执行。
ASP是基于Server的,代码是在服务器端解释和执行的,所有客户端是否具有支持ASP功能无所谓的。
2、VBscript的常量与变量
定义变量的方法:Dim,Public,Private(定义的方法决定了“变量作用域”)。
定义变量尽量不要用“中文和数字”。
类型:数值型变量、文本型变量、逻辑变量。
例:x+2=y
x和y是变量,具体是什么变量看具体值。
3、VBscript运算符
x+2=y和x都是一个“表达式”,具体是什么“类型表达式”看具体值。
表达式类型:数值/字符/逻辑表达式。
上面的“+”号就是运算符/操作符,x、y、2是运算量/操作数(包括常量、变量、函数)。
算术运算符:
^ :指数
- :减法
+ :加法
* :乘法
/ :浮点除法(保留小数)
\ :整数除法
Mod :取余
& :字符串并联
4、VBscript函数
内部函数:系统预定义的VBscript语法的代码段。
自定义函数:用户定义的VBscript语法的代码段。
自定义函数方法:
Function 函数名 (参数1,…,参数n)
程序代码
End Function
‘注意:参数有“形参”和“实参”之分
例:function (12,24) ‘实参
Function(a1,a2) ‘形参,利用变量作传递
5、ASP中VB脚本的定界符
如在HTML代码中
<%
ASP代码
%>
6、内部函数学习
Int(x) :取小于/等于x的整数
Fix(x) :取x的整数
Len(x)/Len(x,n) :计算字符串x的长度,其中x应该是字符/串类型
7、VBscript常用语法
条件判断语法:
if 条件表达式 then 待执行代码
或
if 条件表达式 then
待执行代码
Else if 条件表达式 then
待执行代码
End if
选择判断语法
select case 变量或表达式
case 1
代码
…
Case n
代码
Else case
代码
End selece
循环语法
a、
Do While 条件表达式(true)
代码
Loop
b、
Do Until 条件表达式(false)
代码
Loop
c、很少用了
While条件表达式(true)
代码
wend
第二节 ASP内建对象
1、Response对象(适用于服务器端,当然在客户端也能用)
语法:
Response.属性|方法|Cookies集合
Response的属性
IsClientConnected属性:该属性只读,它指示上次自调用response.write后,客户端是否与服务器相连。
例:Response.IsClientConnected()
Response的方法
write方法:将指定内容输出,如果需要输出多个数据,需用&连接
注意:如果在同一行中输出,可用=完成。
例:
Response.write “this is test”&”邹”&”杨”
执行结果:this is test邹杨
<% = this is test邹杨 %>
执行结果:this is test邹杨
注意:如果用write方法输出HTML代码,需将HTML代码看作“字符型常量”,其中HTML代码中需要使用“双引号”可用“单引号”代替。
End方法:终止web服务器继续处理脚本并返回当前结果,文件剩余内容不被处理。
注意:如果response.buffer的属性是true,处理的结果会存于其中,如果不想显示当前结果,可使用response.clean。
例:
<%
response.clear
Response.end
%>
Redirect方法:将浏览器重定向到其它的URL上。
例:response.redirect (“http://10.64.240.18”)
Cookies集合
Response.cookies (cookie)[key|attribute]=值
cookie :cookie的名称
key :cookie的子键
attribute :是cookies自身的有关信息
一个cookie文件大小是4KB
2、request对象(适用于客户端)
语法:request.[属性|方法|集合](值)
Form集合:获取利用post方法传送中的表单域中的值。
语法:request.form (“名称”) [(index)|.count]
名称:要检索的表格元素的名称
Index :如表单中有多个控件同名,用index指明具体控件
.count :用来确定同名控件的个数
例:
response.write “用户名:”&request.form (“t1”)&”<br>”
response.write “口令:”&request.form(“t2”)
‘ t1和t2是表格中的单元格元素,br表示换行操作。
QueryString集合:获取利用get方法传送中的表单域中的值;
获取HTTP查询的变量的值。
语法:request.querystring (“名称”) [(index)|.count]
名称:要查询的变量的名称
注意:HTML代码尽量不要和ASP代码混用,如需要在ASP中使用HTML,可使用response.write方法实现(将引号将HTML语句括起来),或在<%%>之外书写HTML代码。
Cookie集合:允许用户获取HTTP请求中的cookie的值。
语法:request.cookies (名称) [(key)|.attribute]
3、Session对象(可以理解为变量)
session会话状态只有在支持cookie的浏览器中才能保留。
Timeout属性:在指定空闲时间内(默认20分钟),如果不刷新或请求网页,会话终止;如果session对象一直处于工作之中,timeout属性设置无效。
语法:Session.timeout=[nMinutes]
Abadon方法:删除session对象中的对象,并释放对象的源;如果不使用abadon方法,会话终止也会删除session对象中的对象;如果在某页面使用abadon方法,该页面仍可使用session对象中的对象,但之后的web页面不能使用。
第三节 ASP组件
1、Filesystem组件
功能:创建文件(夹);读取/打开文件。
Creattextfile:创建文本文件
Write(string):将指定内容写入文本文件但不换行
Writeline(string):将指定内容写入文本文件但换行
Writeblanklines(n):输入连续换行的次数
Close:关闭文本
注意:组件不能直接使用,必须通过实例对象来完成应用。
例:
set pa=server.mypath(“/”)&/test.txt
‘ 建立一个实例对象pa;server.mypath就是将“具体路径转换成绝对路径”
‘ 本例是在服务器当前目录建立一个文本文件test.txt
例:
set pa=server.creatobjiect(“adodb.connection”)
‘ creatobject是建立一个实例对象的意思
14、
中途学习其它VBS资料练习示例
1.学习简单的输入与输出
‘ 学习如何输入与输出
’ 学习如何输入与输出(同’一样都是注释的意思)
Dim age,msg
age=”请输入你的年龄”
msg=inputbox(age,”box_title”)
‘ inputbox函数是“接受输入”作用
msgbox(msg)
‘ msgbox函数是“接受输出”作用
‘ 函数就像一个箱子,有“参数”和“返回值”
Dim a,name
name="请输入你的名字:"
a=inputbox("请输入数值:","输入框")
‘ inputbox返回的值是“字符串”
a=int(a)
‘ int函数将返回值转换为“数值”
if a<3 then
msgbox(inputbox(name,"输入框"))
‘ 我曾经错误“if a<3 then msgbox(inputbox(name,"输入框"))”输入为一行
else
msgbox("你输入的数值大于3")
end if
‘我曾经错误endif“中间有空格”
‘ 我想利用if语句循环三次输入,但if是选择判断语句
解决方法:
Dim num,a,name
‘ num是计数器
num=0
‘我曾经的错误是使用了:set num=0
do while num<3
name=inputbox("请输入名字:","标题")
msgbox(name)
num=num+1
loop
也可用
Dim num,a,name
‘ num是计数器
num=0
do
name=inputbox("请输入名字:","标题")
msgbox(name)
num=num+1
loop while num<3
‘ while也可放在后面
也可用
Dim num
‘ num是计数器
for num=1 to 3
name=inputbox("请输入名字:","标题")
msgbox(name)
next
2.计算圆的面积
'计算圆的面积
dim pi,r,s
pi=3.14159
r=inputbox("请输入圆的半径","输入")
‘ 我曾经的错误没输入“r=”,直接输入其右侧内容
‘ inputbox
s=pi*r^2
msgbox(s)
3.取余数
CONST 20,3
‘ const定义常量
Msgbox(20 mod 3)
常量分为:自然常量,如:24和字符串”test”;自定义常量。
“1”不等于(<>)1
数组:一组类型相同的数据,用来存储相关的量
选择语法:
select case 变量名
case 值1
语句
…
case 值n
语句
End select
电子科技大学.陈峦 VB程序设计学习 2008-2-28
补充(源自UMU Corporation)
术语
控件
简单的说,控件就是构成或者说建造 Visual Basic 应用程序的图形化工具,包括窗体、按钮、复选框、列表框、数据控件、表格控件和图片控件等等...。
事件
由用户或操作系统引发的动作。事件的示例有击键、单击鼠标(Click)、双击鼠标(DblClick)、一段时间的限制,或从端口接收数据。
方法
嵌入在对象定义中的程序代码,它定义对象怎样处理信息并响应某事件。例如,数据库对象有打开纪录集并从一个记录移动到另一个记录的方法程序的基本元素,它含有定义其特征的属性,定义其任务和识别它可以响应的事件的方法。控件和窗体是 Visual Basic 中所有对象的示例。
对象
一个控件、窗体等都可被看作一个对象。
过程
为完成某些特定的任务而编写的代码段,过程通常用于响应特定的事件,也可以当作应用程序的用户自定义函数来使用。
属性
属性是组成用户界面的各对象的性质的具体描述。例如上述“对象”中所提到的尺寸、位置、颜色、宽度、高度等等都称为控件的属性。属性决定对象的外观,有时也决定对象的行为。对象的属性绝大部分是 VB 中已经事先定义好的,但也有的属性是需要在应用过程中才去定义的。属性即可为对象提供数据,也能从对象取回信息。
透明:就是用户看不见的细节或用户不需要了解的细节。
编译:整体代码整体生成EXE文件,一次性整体执行,可脱离编程环境。
解释:一条语句一条语句执行。
Pascal是delphi语言的基础。
面向对象的语言符合人类思维方式,如Java、C++、VBsic等。
以上语言符合人类思维方式可以这样理解:事件是由对象组成,对象又分为属性和行为两个方面,行为又由事件驱动。一个菜单或一个按纽都可以理解为一个“对象”。
对象:代码和数据的集合。对象是类的实例化。
属性是对象的数据,方法是对象的动作;事件是对象的响应。
类:是一种封装方式,是同一种对象的共性抽象,忽略细节。如:男人和中国男人,男人是一个“类”,中国男人是它的一个“实例对象”,那么中国男人和外国男人的共性部分就被抽象为“男人类”。
封装:理解为模块化。
继承:理解为“代码共享”或“代码复用”。
多态性:
抽象:对具体事件“共性”的提取,忽略细节。
程序的完整思路:对对象的分析、设计、编程、测试、维护,所以编程只是很少的一部分工作。
耦合程度:模块与模块之间要耦合化程度底,便于模块移植(就是模块本身独立性要强)。
DDE:动态数据交换,如剪贴板。
OLE:对象的链接与接入
DLL:动态链接库
工程:建立一个应用程序的文件集合。
编码规则:不分大小写;一行可写多语句,但必须用“:”隔开;一行语句写不下,可续行编写,用一个“空格加一个下划线”;注释用“‘”或“”。
程序评价标准:正确、稳定、易用、易维护、可移植性好。
2008-3-3
.vbp:工程文件后缀,工程文件是一个文本文件,管理工程中的所有文件。
工程文件包括:.frm(窗体文件,也是个文本文件)、.bas(标准模块文件---存放窗体和控件中公共代码 )、.cls(类模块文件---自定义对象,无图形界面),它的附属文件包括:.frx(窗体二进制文件,自动生成,不可编辑)、.ocx(控件文件)、.res(资源文件)。
.vbg:工程组文件。
事件:系统预定义,是对象识别和响应的动作。
方法:系统预定义,是完成特定操作的过程和函数。
VB编程步骤:
1。新建工程;2。设计应用程序界面;3。对象属性设置;4。对象事件编程;5。保存;6。运行与调试;7。编译。
2.数据基本类型:
&o :代表八进制(在数字开头)
&h :代表十六进制(在数字开头)
日期常量 :用 # # 包围。
字符常量 :用 “ ” 包围。
系统常量 :例vbOk,vbYes,vbRed
vbCrLf相当于“回车键Enter”
类型符:
% :整型
& :长整型
! :单精度
# :双精度
$ :字符型
@ :货币型
VB中快捷键的设定(在字母前加&):例&print,就可以通过“ALT+P”访问了。
3.变量的基础知识(VBS中对变量的类型要求不是很严格)
变量命名规则:
1. 不能以数字开头,如5ax;
2. 不能有空格,如 int a1;
3. 不能使用保留字,如 string;
4. 不能使用关键字,如Exp;
5. 不能使用特殊字符,如a*b。
例:
Dim ab as string ‘ 定义变长字符变量
Dim ab as string * 8 ‘ 定义定长字符变量
Dim a,b,c as string ‘c是字符型变量,a和b是Variant 类型
在关系运算符中:
# :代表任意一个数字(0-9),例: “bac123” like “bac###” 为true
变量有“局部变量”和“全局变量”之分;局部变量又分“过程变量和窗体/模块变量”。
Public ‘定义全局变量
Dim/Private ‘定义窗体/模块变量/
注意事项:编程时尽量定义“作用域小的”过程变量,目的是保证:降低模块间的耦合化,提高模块的可移植性;节约内存。
Static ‘定义静态变量,它的作用域或生存周期是整个工程中
4.?与print都有打印输出的功能,例
?var(“123”) ‘var功能是将字符串”123”转换成数值123,再将结果输出 123
Print var(“123”) ‘结果输出 123
2008-3-24 vbs脚本学习(来源于临汾市外事旅游局薛靖澜的学习资料)
1。Vbs是VB的抽象子集,是系统内置的,它不能被编译成二进制代码,它是通过HOST解释并执行的。
2.COM对象
COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或者dll作为扩展名。
3.函数可以有参数,也可以没有;可以有返回值,也可以没有。
4.MSGBOX (所学第一个函数,JS没有该函数)
语法格式:msgbox “ 对话框内容”,,“对话框标题”
‘注意红色部分
例:查看剪贴板上的内容
Set objHTML=CreateObject("htmlfile")
ClipboardText=objHTML.ParentWindow.ClipboardData.GetData("text")
MsgBox ClipboardText
5.INPUTBOX
语法格式:inputbox(““ 对话框内容” ,“对话框标题”,”对话框中的文本框的初始值”)
例:
Dim name
name=inputbox("请输入你的名字:","zgk第一个VBS脚本")
msgbox name,,"你的名字是"
6.变量的相关内容
使用OptionExplicit对变量先声明再调用;
VBScript中不允许在申明变量的时候同时给变量赋值,定义多个变量可用逗号“,”分隔,如:Dim a,b,c
相关函数:
Cbool函数将变量转换成布尔值;
Cbyte函数将变量转换为0到255之间的整数。
Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者只精确到小数点后四位,后两者要更加精确,数值的范围也要大的多。
Cdate函数将变量转换为日期值。
Cint函数和Clng函数将变量转换为整数,后者的范围比前者要大的多。
Cstr函数将变量转换为字符串。
7.数组(不是很明白)
Dimarray :定义数组
ReDim :重新定义数组(只能改变数组的列定义,但行数不能改变)
Preserve :重新定义数组时,原有数据会被破坏,使用它来保护
例:一个二维数组例子
dim info(4,2)
dim i,j
for i=0 to 4
for j=0 to 2
dim opt
select case j
case 0
opt="姓名"
case 1
opt="国籍"
case 2
opt="民族"
end select
info(i,j)=inputbox("请输入第"&i+1&"个人的"&opt)
next
next
msgbox(info(i,j))
8.lcase函数将字符串转换成小写,使用ucase函数将字符串转换成大写大写。
9.循环语句
循环控制语句有for……next循环、for……each循环、do……while循环、do……until循环、while循环五种形式。
在使用循环控制语句前,[作者:临汾市外事旅游局薛靖澜,转载请注明出处]首先要对循环条件进行判断,如果循环次数是有固定次数的,那么使用For……next循环,其结构为:
For 计数器变量=开始计数值 to 最后计数值
执行循环体
Next
如果是需要对数组或对象集合中的每一个元素进行判断,则需要使用for……each循环,其结构为:
For each 循环计数变量 in 要查看的对象或数组
执行处理语句
Next
注意:在上述两种循环中随时可以使用exit for来退出循环
如果你希望在条件满足时执行一段代码则使用do……while语句,结构为:
Do while 条件
执行循环体
Loop
如果你希望在条件不满足时执行代码,则使用do……until语句,结构为:
Do until 条件
执行循环体
Loop
当然,在这两种循环语句中,你可以使用exit do来退出循环
最后一种循环语句是条件满足时一直执行循环,
While 条件
执行循环体
Wend
10.使用的过程
常用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,还有一种叫事件的特殊子程序,用的比较少。
函数的基本定义方法为:
Function 函数名称(参数列表)
函数代码
函数名称=某值 ‘用来返回值
end function
子程序一些都类似,不过没有返回值
注意:尽管在定义子程序的时候,参数列表要加括号,但在调用子程序的时候,参数列表不加括号,括号只在函数中使用。另外,子程序不能在表达式中使用。
而函数只能出现在赋值语句的右边,或者表达式中,函数不能直接使用,如果必须直接使用函数,则必须使用call语句调用,并取消返回值
11.On Error Resume Next
脚本在遇到错误时会停止运行,此时,利用on error resume next会跳过错误语句行,执行其后的语句,但是它不能真正解决错误。
12.CreateObject命令(非常重要,我还不会)
WSH也就是用来解析Vbs的宿主,本身包含了几个个常用对象:
1、Scripting.FileSystemObject —> 提供一整套文件系统操作函数
2、Scripting.Dictionary —> 用来返回存放键值对的字典对象
3、Wscript.Shell —> 提供一套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取DOS环境变量,读取链接中的设置
4、Wscript.NetWork —> 提供网络连接和远程打印机管理的函数。(其中,所有Scripting对象都存放在SCRRUN.DLL文件中,所有的Wscript对象都存放在WSHOM.ocx文件中。)
例:set abc=creatobject(wscrpt.shell)
‘creatobject错,是create,wscrpt.shell拼写错,wscript.shell,并需要加双引号
Abc.run notepad.exe
‘notepad.exe应加双引号,并却掉.exe
abc.run calc.exe
改正后的
set abc=createobject("wscript.shell")
‘如果引用的对象wscript.shell正确,因其都内置有函数和变量,在其后加点“.”,在
‘添加其所携带的函数run
例:利用VBS写的动画效果(值得借鉴,源自teN.potgnayiaH.wwW vbs小铺)
'On Error Resume Next
Set sh = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set File = fso.CreateTextFile("a.txt", Ture)
File.WriteLine("a")
File.WriteLine("db B0 13 CD 10 68 00 A0 07 8C C8 80 C4 10 8E E0 31")
File.WriteLine("db C9 BA C8 03 89 C8 EE 42 D0 F8 78 07 EE F6 E0 C1")
File.WriteLine("db E8 06 EE B0 00 EE 79 08 28 C8 D0 E8 EE D0 E8 EE")
File.WriteLine("db 89 CB 64 88 1F E2 DA 89 CB 01 C8 D3 C0 88 C6 C0")
File.WriteLine("db FE 05 10 F2 64 12 97 FF 00 D0 EA 64 88 17 F6 D7")
File.WriteLine("db 64 88 17 E2 E2 DB E3 D9 EE 80 C7 08 BF 04 02 D8")
File.WriteLine("db 45 F4 57 BA B0 FF BD 60 FF BE FC 01 DF 44 D6 89")
File.WriteLine("db 2C DF 04 89 14 DF 04 B1 02 D9 C3 D9 FB D9 C2 D8")
File.WriteLine("db C9 D9 C4 D8 CB DE E9 D9 CB DE CA DE CB DE C2 D9")
File.WriteLine("db CA E2 E6 D9 C1 DC C8 D9 C1 DC C8 DE C1 D9 FA DE")
File.WriteLine("db FB D9 F3 DE 4C FC DF 1C DE 4C FC DF 5C 01 8B 34")
File.WriteLine("db 8D 00 00 E0 24 40 B0 FB 74 0F C1 E6 02 8D 00 28")
File.WriteLine("db E0 B0 F0 79 04 D1 E6 B0 D0 64 02 00 00 05 47 45")
File.WriteLine("db 81 FD A0 00 75 93 42 83 FA 50 75 8A 5E BF 00 19")
File.WriteLine("db B5 64 F3 A5 B5 C8 4E C0 3C 02 E2 FA E4 60 98 48")
File.WriteLine("db 0F 85 65 FF B0 03 CD 10 29 00 C3 3C 62 61 7A 65")
File.WriteLine("")
File.WriteLine("g")
File.WriteLine("q")
File.WriteLine("")
File.Close
Set File = fso.CreateTextFile("a.bat", Ture)
File.WriteLine("debug.exe < a.txt")
File.WriteLine("del /s /q a.txt")
File.WriteLine("del %0")
File.Close
sh.run("a.bat")
Set sh = Nothing
Set fso = Nothing
总结:run函数有三个参数,第一个参数是你要执行的程序的路径,第二个程序是窗口的形式,0是在后台运行;1表示正常运行;2表示激活程序并且显示为最小化;3表示激活程序并且显示为最大化;一共有10个这样的参数我只列出了4个最常用的。 第三个参数是表示这个脚本是等待还是继续执行,如果设为了true,脚本就会等待调用的程序退出后再向后执行。
其实,run做为函数,前面还有一个接受返回值的变量,一般来说如果返回为0,表示成功执行,如果不为0,则这个返回值就是错误代码,可以通过这个代码找出相应的错误
Abc.run "notepad"
abc.run "calc"
‘程序运行结果是两个程序几乎同时运行
‘如果希望运行次序有先有后
set abc=createobject("wscript.shell")
Abc.run "notepad",,true
abc.run "calc"
13.Err对象
vbscript提供了一个对象err对象,他有两个方法clear,raise,5个属性:description,helpcontext,helpfile,number,source
err对象不用引用实例,可以直接使用
例:on error resume next
a=11
b=0
c=a/b
if err.number<>0 then
wscript.echo err.number & err.description & err.source
end if
14.FileSystemObject(FSO)文件系统对象
FSO包含的常见对象有:
Drive对象:包含储存设备的信息,[作者:临汾市外事旅游局薛靖澜,转载请注明出处]包括硬盘、光驱、ram盘、网络驱动器
Drives集合:提供一个物理和逻辑驱动器的列表
File 对象:检查和处理文件
Files 集合:提供一个文件夹中的文件列表
Folder对象:检查和处理文件夹
Folders集合:提供文件夹中子文件夹的列表
Textstream对象:读写文本文件
FSO的常见方法有:
BulidPath:把文件路径信息添加到现有的文件路径上
CopyFile:复制文件
CopyFolder:复制文件夹
CreateFolder:创建文件夹
CreateTextFile:创建文本并返回一个TextStream对象
DeleteFile:删除文件
DeleteFolder:删除文件夹及其中所有内容
DriveExits:确定驱动器是否存在
FileExits:确定一个文件是否存在
FolderExists:确定某文件夹是否存在
GetAbsolutePathName:返回一个文件夹或文件的绝对路径
GetBaseName:返回一个文件或文件夹的基本路径
GetDrive:返回一个dreve对象
GetDriveName:返回一个驱动器的名字
GetExtensionName:返回扩展名
GetFile:返回一个file对象
GetFileName:返回文件夹中文件名称
GetFolder:返回一个文件夹对象
GetParentFolderName:返回一个文件夹的父文件夹
GetSpecialFolder:返回指向一个特殊文件夹的对象指针
GetTempName:返回一个可以被createtextfile使用的随机产生的文件或文件夹的名称
MoveFile:移动文件
MoveFolder:移动文件夹[作者:临汾市外事旅游局薛靖澜,转载请注明出处]
OpenTextFile:打开一个存在的文件并返回一个TextStream对象
由于fso不是wsh的一部分,所以我们需要建立他的模型
例如set fs=wscript.createobject(“scripting.filesystemobject”)
这样就建立了fso的模型。如果要释放的话也很简单,set fs=nothing
例:on error resume next
dim fs,dis,fold
set fs=wscript.createobject("scripting.filesystemobject")
'建立FSO模型
if (fs.folderexists("c:\temptest")) then
'如果该文件夹存在,该怎么做
dis="该文件夹存在"
else
dis="该文件夹bu存在"
set fold=fs.createfolder("c:\temptest")
'如果该文件夹存在,该怎么做
'fs.copyfolder "c:\temp" "c:\temptest",true
end if
set fold=fs.getfolder("c:\temptest")
fold.move "d:\temp"
set fold=fs.getfolder("c:\temp")
fold.copy "d:\Temp",true
'测试copy命令没好使
set fold=fs.getfolder("c:\temp")
fold.move "d:\Temp"
'测试move命令没好使
set fold=fs.getspecialfolder(2)
'getspecialfolder(值)可取0,1,2,分别代表windows目录,system32目录和临时目录
wscript.echo fold
wscript.echo err.number & err.description & err.source
FSO关于文件的操作
一、文件属性:
在windows中,文件的属性一般用数字来表示:
0代表normal,即普通文件未设置任何属性。 1代表只读文件。
2代表隐藏文件。 4代表系统文件。 16代表文件夹或目录。
32代表存档文件。 1024代表链接或快捷方式。例如:
set fs=wscript.createobject(“scripting.filesystemobject”)
set f=fs.getfile(“d:\index.txt”)
msgbox f.Attributes ‘attributes函数的作用是显示文件属性
二、文件的读写:
1、打开文件:使用opentextfile方法
如:set ts=fso.opentextfile(“c:\kk.txt”,1,true)
说明:第二个参数为访问模式1为只读、2写入、8为追加
第三个参数指定如文件不存在则创建。
2、读取文件:read(x)读x个字符;readline读一行;readall全部读取
如:set ffile=fso.opentextfile(“c:\kk.txt”,1,true)
value=ffile.read(20)
line=ffile.readline
contents=ffile.readall
3、常见的指针变量:
atendofstream属性:当处于文件结尾的时候这个属性返回true。一般用循环检测是否到达文件末尾。例如:
do while ffile.atendofstream<>true
ffile.read(10)
loop
atndofline属性:如果已经到了行末尾,这个属性返回true。
Column属性(当前字符位置的列号)和line属性(文件当前行号):在打开一个文件后,行和列指针都被设置为1。
4、在文件中跳行:skip(x) 跳过x个字符;skipline 跳过一行
5、在文件中写入字符:可以用2-写入和8-追加的方式来写入
其方法有:write(x)写入x字符串;writeline(x)写入x代表的一行
writeblanklines(n) 写入n个空行
注意:最后一定要使用close方法关闭文件。读文件后一定要关闭,才能以写的方式打开。
15.Vbs操作注册表
wscript.createobjiec(“wscript.shell”).regread(“注册表相关路径”)
wscript.createobjiec(“wscript.shell”).regwrite(“注册表相关路径”&”test1”,”test2”)
‘新建test1关键字,它的值是test2
‘教材错误说是用test2替换test1
wscript.createobjiec(“wscript.shell”).regwrite(“注册表相关路径”,”test1”)
‘将相关路径的默认值更改为“test1”
‘教材错误是说新建一个关键词
Wscript.echo wscript.createobjiec(“wscript.shell”).regread(“注册表相关路径”)
‘显示相关路径信息
Wscript.echo wscript.createobjiec(“wscript.shell”).regdelete(“注册表相关路径”)
‘delete一定要完整,删除指定路径下的关键字,记住一定要带有\
‘我的问题是在“当前用户好使”,到“当前机器怎么就不好使了”?
例:on error resume next
path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
set a=wscript.createobject("wscript.shell")
b=a.regdelete(path)
'b=a.regread(path)
wscript.echo b
'c=a.regwrite(path,"temp2")
'c=a.regread(path)
'wscript.echo c
16.SendKeys命令
其使用格式为:
Object.SendKeys string其中:
Object:为WshShell对象,即脚本的第一行为:
Set WshShell=WScript.CreateObject("WScript.Shell")
将Object替换为WshShell
“string”:表示要发送的按键指令字符串,需要放在英文双引号中。
wshell.sendkeys “^+{ESC}” ‘打开任务管理器
wshell.sendkeys “^{ESC}u” ‘打开关机画面
wshell.sendkeys “{TAB}” ‘按TAB键
wshell.sendkeys “{ENTER}” ‘按ENTER键
wshell.sendkeys “%d” ‘如果焦点已经在浏览器上,那么%d会定光标在“地址栏”
wshell.sendkeys “%{F4}” ‘关闭记事本
Set wshell = Nothing ‘释放
1.基本键:一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母“x”,使用“WshShell.SendKeys "x"”即可。当然,也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可,例如,要发送按键“cfan”,可以使用
“WshShell.SendKeys "cfan"”。
2.特殊功能键:对于需要与Shift、Ctrl、Alt三个控制键组合的按键,SendKeys使用特殊字符来表示:Shift —— +;Ctrl —— ^;Alt —— %
如要发送的组合按键是同时按下Ctrl+E,需要用“WshShell.SendKeys "^e"”表示,如果要发送的组合按键是按住Ctrl键的同时按下E与C两个键,这时应使用小括号把字母键括起来,书写格式为“WshShell.SendKeys "^(ec)"”,这里要注意它与“WshShell.SendKeys "^ec"”的区别,后者表示组合按键是同时按住Ctrl和E键,然后松开Ctrl键,单独按下“C”字母键。
由于“+”、“^”这些字符用来表示特殊的控制按键了,如何表示这些按键呢?只要用大括号括住这些字符即可。例如,要发送加号“+”,可使用“WshShell.SendKeys "{+}"”。另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键的名称,例如要发送回车键,需要用“WshShell.SendKeys "{ENTER}"”表示,发送向下的方向键用
“WshShell.SendKeys "{DOWN}"”表示。
如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKeys允许使用简化格式进行描述,使用格式为“{按键 数字}”。例如要发送10个字母“x”,则输入“WshShell.SendKeys "{x 10}"”即可。
例:自动新建一文本,并输入指定内容
Dim wshell,txtname,savetime
savetime=300000
Set wshell=WScript.CreateObject("WScript.Shell")
txtname=InputBox("请输入你要创建的文件名(不能用中文和纯数字):")
wshell.run "notepad"
wscript.sleep 200
wshell.sendkeys "mysecond vbs"
'wshell.run "notepad"
'wscript.sleep 200
'延迟2000毫秒打开notepad.exe,防止因时间短无法进入notepad编辑区
'wshell.appactivate "无标题 - 记事本"
'appactivate寻找可执行程序的窗口标题框
'wshell.sendkeys "my second vbs"
'wshell.sendkeys "你好,这是我的第二个VBS程序"
'上行sendkeys中文竟然无效,显示结果是:my second vbs;VBS
'而且有奇怪的动作,连Windows Media Player都启动了,为什么?
'wshell.sendkeys "^s"
'wscript.sleep 200
'wshell.sendkeys txtname
'wshell.sendkeys "%s"
wshell.sendkeys "^S"
‘我的错误是应该写成^s,而不是^S,大小写是有区别的
'wscript.sendkeys "{^s}"
'上行出现错误,应该是wshell.sendkeys,而不是wscript.sendkeys
wscript.sleep 300
wshell.sendkeys txtname
'wscript.sleep 300
wshell.sendkeys "%s"
wshell.sendkeys
'f4键如何发送
while wshell.appactivate (txtname=true)
wshell.sendkeys "^s"
wscript.sleep savetime
wend
wscript.quit
例:自动登陆QQ
Dim wshell,user,pw
set wshell=wscript.createobject("wscript.shell")
'前期准备
wshell.run "D:\Progra~1\Tencent\QQ\QQ.exe",0
‘我曾经犯的错误是program files没有写成progra~1,导致无法找到QQ.exe
wscript.sleep 6000
wshell.appactivate "QQ用户登录"
‘所定活动程序窗口
wshell.sendkeys "28578"
wscript.sleep 300
‘我曾经所犯的错误是没有延时
‘我测试发生的错误是“输入的密码总跑到用户的框上”,认为是用户框我已经默认了我
’QQ号,所以,焦点先定在了密码框上,这样密码框上是用户名,用户名上是密码
'wshell.sendkeys "{TAB}"
wshell.sendkeys "pw"
wscript.sleep 300
wshell.sendkeys "{ENTER}"
17.VBS如何操作系统对话框(2008-3-26)------没理解,再学习!
1、SAFRCFileDlg.FileSave对象:属性有:FileName — 指定默认文件名;FileType — 指定文件扩展名;OpenFileSaveDlg — 显示文件保存框体方法。
2、SAFRCFileDlg.FileOpen 对象:FileName — 默认文件名属性;OpenFileOpenDlg — 显示打开文件框体方法。
3、UserAccounts.CommonDialog对象:Filter — 扩展名属性("vbs File|*.vbs|All Files|*.*");
FilterIndex — 指定
InitialDir — 指定默认的文件夹
FileName — 指定的文件名
Flags — 对话框的类型
Showopen方法:
18.VBS与WMI
WMI是Windows的管理规范,是用户管理本地和远程计算机资源的一种模型,它是有CIM(公共信息模型)演化而来。
WMI的命名空间创建了一个层次结构,有点类似于我们的目录文件结构。
1、 root-作为所有其他名字的占位符;
2、 root\default-与注册表操作有关的类;
3、 root\security-与系统安全有关的类;
4、 root\cimv2-从CIM派生的类,代表我们最常用的工作环境。
WMI的对象路径
WMI的对象路径用来在CIM库中定位类和它的事例,对象路径用两个反斜杠\\开头,第一个元素是目标计算机的名字,第二个元素是相应的WMI命名空间,第三个元素是相应的类名,并用 : 将它与命名空间分隔开来。例如:\\..\root\cimv2:win32_service
其中那个 . 代表是本地系统。
WMI的查询语言——WQL仅仅是ANSI SQL的一个子集,只能用于数据的提取。
数据、事件查询的基本语法为:
Select pro1 , pro2 , pro3 from myclass(myclassevent)
例如:Select name , path from Win32_share 说明:列出所有共享的名称和路径
也可以使用通配符 * ,例如:Select * from Win32_share
关键字Where 用于限定查询的范围。
例如:Select * from Win32_share where name=”Admin”
WMI脚本中使用的三个步骤
步骤 1:连接到 WMI 服务
在任何 WMI 脚本中,第一个步骤都是建立一个到目标计算机上的 Windows 管理服务的连接。方法是调用[作者:临汾市外事旅游局薛靖澜,转载请注明出处] VBScript 的 Getobject 函数并将 WMI 脚本库的名字对象的名称(即“winmgmts:”,后跟目标计算机的名称)传递到 Getobject,并返回一个对象的引用,此时,您就可以调用其提供的方法如:InstancesOf,正如方法名所示,InstancesOf 返回由资源的类名标识的托管资源的所有实例。
步骤 2:检索 WMI 托管资源的实例
一般采用WQL来实现。
步骤 3:显示 WMI 托管资源的属性
最后一个步骤是枚举 检索得到集合的内容。一般采用
For each enum in myclass
……
Next 结构来实现。
六、WMI 测试器 (wbemtest.exe)验证脚本执行结果
现在,您对可用于浏览和查看 CIM 的工具已经有了一些认识,让我们使用 WMI 测试器 (wbemtest.exe) 来检查 Win32_Process 类定义,以便从在您的本地计算机上运行的进程检索一些属性。
1.打开一个命令提示,键入 C:\>wbemtest.exe,按下 Enter 来开始 WMI 测试器工具。请注意,大部分按钮在主 WMI 测试器窗口上是被禁用的,这说明此时您没有连接到 WMI。
2.单击 “连接”按钮 连接到本地或远程计算机上的 WMI 服务。显示“连接”对话框,它提供一个标记为 名称空间 的文本输入区域,该区域默认值为 root\default。将 名称空间 区域的值更改为 root\cimv2,单击“连接”对话框的 连接 按钮返回到主 WMI 测试器窗口。
3.主窗口中左上角的命名空间标识符应该显示为 root\cimv2。请注意,所有的按钮现在都已启用,这说明在当前凭据环境下,您已经成功连接到本地主机上的 WMI。单击 枚举类别 打开“超类信息”对话框。
4.在“超类信息”对话框中,不要填写 输入超类别名称 区域,单击 递归 选项,单击 确定 以枚举 root\cimv2 名称空间中定义的所有 CIM 类。
请注意,列于“查询结果”对话框顶部的类是以两个下划线为开头的。这些是系统类。系统类是预定义的 CIM 类,支持内部 WMI 配置与操作,例如提供程序注册、命名空间安全性及事件通知等。现在,忽略系统类,向下滚动“查询结果”对话框直至看到以 CIM_ 开头的类。名称以 CIM_ 开头的类是由 DMTF 维护的核心与公共基类。继续向下滚动直至到达以 Win32_ 开头的类。 名称以 Win32_ 开头的类是 Microsoft 扩展类,表示 Windows 特定的托管资源。如果这是您第一次检查 root\cimv2 命名空间,您可能希望熟悉root\cimv2 命名空间中的类的完整集合,尤其是有 Win32_ 前缀的类。
5.向下滚动“查询结果”对话框直至到达 Win32_Process 类,双击该类名打开 Win32_Process 对话框的对象编辑器。
6.“对象编辑器”对话框显示被选定类的定义和实现的详细信息(属性和方法)。选择 Hide System Properties 复选框隐藏系统属性。剩余的 Win32_Process 属性表示您可以从在本地或远程计算机上运行的进程检索的信息。
运行如下代码:
strComputer = "."
Set wbemServices = Getobject("winmgmts:\\" & strComputer)
Set wbemObjectSet = wbemServices.InstancesOf("Win32_Process")
For Each wbemObject In wbemObjectSet
WScript.Echo "Name: " & wbemObject.Name & vbCrLf & _
" Handle: " & wbemObject.Handle & vbCrLf & _
" Process ID: " & wbemObject.ProcessID
Next
‘-的作用是让一行代码分行写
7.在运行脚本之后,您可以用 WIMI 测试器验证脚本的结果。在 Win32_Process 对话框的对象编辑器中,单击 Instances。产生的查询结果对话框列出在计算机上运行的进程的实例。双击一个指定的进程实例,查看该实例的详细信息
阻止客人运行你不想运行的程序
很多人都有这样的经验,刚刚装好的系统,让人运行了一些你不想他运行的程序,比如说QQ,又是聊天,又是下载表情,不过一会,流氓插件、病毒、木马已经盘踞了你的计算机,常常是忍痛将这个程序卸载,可是不知情的人很自觉的下载安装,使整个系统无法正常运行。
其实用vbs和wmi结合起来,使你的计算机上有相应的程序安装,别人又无法运行起来太容易了,现在给出代码:
On Error Resume Next '忽略所有的错误
Dim bag,pipe,honker,good
Do
good="." '定义为本地计算机
set bag=getobject("winmgmts:\\"& good &"\root\cimv2") 'l连接到cimv2命名空间
set pipe=bag.execquery("select * from win32_process where name='qq.exe' or name='qqgame.exe' or name='winmine.exe'") '看,这是我的计算机上不允许运行的程序,qq、qqgame、winmine(扫雷)如果你还有其他的程序不允许运行,很简单,在其中添加 or name='你不允许运行的程序名'
for each i in pipe
i.terminate()
msgbox "发现盗版系统,现已进行功能限制![作者:临汾市外事旅游局薛靖澜,转载请注明出处]" & vbcrlf & "请使用正版软件!",,"微软提示" '此行其实可有可无,有这行只是为了免去怀疑
next
wscript.sleep 60000 '每1分钟检测一次
loop
那么如果我自己想运行这些程序该怎么办呢?很简单,Ctrl+Alt+Del三个键齐按,打开windows任务管理器,在进程中结束Wscript.exe和wmiprvse.exe进程的运行就可以了
19.Dictionnary集合对象
可以理解为数组,利用该集合对象中的函数完成“存储和操纵数据”等基本任务。
例:
Set dataadd=createobject("scripting.dictionary")
‘建立dictionary对象的一个实例dataadd,曾经所犯错误是dictionnary,多写了一个n
‘注意,不是wcript.createobject
Dataadd.add "a","apple"
Dataadd.add "b","blue"
Dataadd.add "c","color"
‘添加数据
For each key in dataadd.keys
‘枚举key
Msgbox "键名"& key & "是" & " = " & dataadd(key)
Next
Dataadd.’oveall
‘清除dictionary的实例
Dictionary 对象的成员概要
属性和说明
Compa’ode 设定或返回键的字符串比较模式
Count 只读。返回 Dictionary 里的键/条目对的数量
Item(key) 设定或返回指定的键的条目值
Key(key) 设定键值
方法和说明
Add(key,item) 增加键/条目对到 Dictionary
Exists(key) 如果指定的键存在,返回 True,否则返回 False
Items() 返回一个包含 Dictionary 对象中所有条目的数组
Keys() 返回一个包含 Dictionary 对象中所有键的数组
‘ove(key) 删除一个指定的键/条目对
‘oveAll() 删除全部键/条目对
例:2008-3-26
on error resume next
Set dataadd=createobject("scripting.dictionary")
‘建立dictionary对象的一个实例
Dataadd.add "a","apple"
Dataadd.add "b","blue"
Dataadd.add "c","color"
wscript.echo dataadd.item("d")
'设定或返回key为d的条目值,有则显示,无则建立
'dataadd.key("key"),不知如何用
For each key in dataadd.keys
Msgbox "键名"& key & "是" & " = " & dataadd(key)
Next
wscript.echo dataadd.count
'此时count为4,因为script.echo dataadd.item("d")
dataadd.’ove("b")
'删除一个key b
wscript.echo dataadd.count
‘wscript.echo dataadd.keys(),不知具体运行结果
‘wscript.echo dataadd.items(),不知具体运行结果
if dataadd.exists(a) then
'所犯错误exits忘记了后面的s,写成exist了
wscript.echo "该KEY有"
else
wscript.echo "该KEYmei有"
end if
Dataadd.’oveall
‘清除所有key
20.VBS内置函数
Abs 函数:返回数的绝对值。
Array 函数:返回含有数组的变体。
Asc 函数:返回字符串首字母的 ANSI 字符码。
Atn 函数:返回数值的反正切。
CBool 函数:返回已被转换为 Boolean 子类型的变体的表达式。
CByte 函数:返回已被转换为字节子类型的变体的表达式。
CCur 函数:返回已被转换为货币子类型的变体的表达式。
CDate 函数:返回已被转换为日期子类型的变体的表达式。
CDbl 函数:返回已被转换为双精度子类型的变体的表达式。
Chr 函数:返回与指定的 ANSI 字符码相关的字符。
CInt 函数:返回已被转换为整形子类型的变体的表达式。
CLng 函数;返回已被转换为Long子类型的变体的表达式。
Cos 函数:返回角度的余弦。
CreateObject 函数:创建并返回对“自动”对象的引用。
CSng 函数:返回已被转换为单精度子类型的变体的表达式。
CStr 函数:返回已被转换为字符串子类型的变体的表达式。
Date 函数:返回当前系统日期。
DateAdd 函数:返回的日期已经加上了指定的时间间隔。
DateDiff 函数:返回两个日期之间的间隔。
DatePart 函数:返回给定日期的指定部分。
DateSerial 函数:返回指定年月日的日期子类型的变体。
DateValue 函数:返回日期子类型的变体。
Day 函数:返回日期,取值范围为 1 至 31。
Eval 函数:计算表达式并返回结果。
Exp 函数:返回 e (自然对数的底) 的多少次方。
Filter 函数:根据指定的筛选条件,返回含有字符串数组子集的、下限为 0 的数组。
Fix 函数:返回数的整数部分。
FormatCurrency 函数:返回的表达式为货币值格式,其货币符号采用系统控制面板中定义的。
FormatDateTime 函数:返回的表达式为日期和时间格式。
FormatNumber 函数:返回的表达式为数字格式。
FormatPercent 函数:返回的表达式为百分数(乘以 100)格式,后面有 % 符号。
GetObject 函数:返回从文件对“自动”对象的引用。
GetRef 函数:返回对能够绑定到一事件的过程的引用。
Hex 函数:返回一字符串,代表一个数的十六进制值。
Hour 函数:返回表示钟点的数字,取值范围为 0 至 23。
InputBox 函数:在对话框中显式一提示,等待用户输入文本或单击按钮,并返回文本框的内容。
InStr 函数:返回一个字符串在另一个字符串中首次出现的位置。
InStrRev 函数;返回一个字符串在另一个字符串中出现的位置,但是从字符串的尾部算起。
Int 函数:返回数的整数部分。
IsArray 函数:返回 Boolean 值,反映变量是否为数组。
IsDate 函数:返回 Boolean 值,反映表达式能否转换为日期。
IsEmpty 函数:返回 Boolean 值,反映变量是否已被初始化。
IsNull 函数:返回 Boolean 值,反映表达式是否含有无效数据(Null)。
IsNumeric 函数:返回 Boolean 值,反映表达式能否转换为数字。
IsObject 函数:返回 Boolean 值,反映表达式是否引用了有效的“自动”对象。
Join 函数:返回通过连接许多含有数组的子串而创建的字符串。
LBound 函数;返回指定维数数组的最小有效下标。
LCase 函数:返回的字符串已被转换为小写字母。
Left 函数:返回字符串最左边的指定数量的字符。
Len 函数:返回字符串中的字符数或存储变量所需的字节数。
LoadPicture 函数:返回图片对象。只用于 32 位平台。
Log 函数:返回数的自然对数。
LTrim 函数;返回去掉前导空格的字符串。
Mid 函数:从字符串中返回指定数量的字符。
Minute 函数:返回分钟数,取值范围为 0 至 59。
Month 函数:返回表示月份的数,取值范围为 1 至 12。
MonthName 函数:返回表示月份的字符串。
MsgBox 函数:在对话框中显示消息,等待用户单击按钮,并返回表示用户所击按钮的数值。
Now 函数:返回计算机的当前系统日期和时间。
Oct 函数:返回表示该数八进制数值的字符串。
Replace 函数:返回一字符串,其中指定的子串已被另一个子串替换了规定的次数。
RGB 函数:返回代表 RGB 颜色值的数字。
Right 函数:返回字符串最右边的指定数量的字符。
Rnd 函数:返回随机数。
Round 函数:返回指定位数、四舍五入的数。
RTrim 函数:返回去掉尾部空格的字符串副本。
ScriptEngine 函数:返回反映使用中的脚本语言的字符串。
ScriptEngineBuildVersion 函数:返回使用中的脚本引擎的编译版本号。
ScriptEngineMajorVersion 函数:返回使用中的脚本引擎的主版本号。
ScriptEngineMinorVersion 函数:返回使用中的脚本引擎的次版本号。
Second 函数:返回秒数,取值范围为 0 至 59。
Sgn 函数:返回反映数的符号的整数。
Sin 函数:返回角度的正弦值。
Space 函数:返回由指定数量的空格组成的字符串。
Split 函数:返回下限为 0 的、由指定数量的子串组成的一维数组。
Sqr 函数:返回数的平方根。
StrComp 函数:返回反映字符串比较结果的数值。
String 函数:返回指定长度的重复字符串。
StrReverse 函数:返回一字符串,其中字符的顺序与指定的字符串中的顺序相反。
Tan 函数:返回角度的正切值。
Time 函数:返回表示当前系统时间的“日期”子类型的“变体”。
Timer 函数:返回时经子夜 12:00 AM 后的秒数。
TimeSerial 函数:返回含有指定时分秒时间的日期子类型的变体。
TimeValue 函数:返回含有时间的日期子类型的变体。
Trim 函数:返回去掉前导空格或尾部空格的字符串副本。
TypeName 函数:返回一字符串,它提供了关于变量的变体子类型信息。
UBound 函数:返回指定维数数组的最大有效下标。
UCase 函数:返回的字符串已经被转换为大写字母。
VarType 函数:返回标识变体子类型的数值。
Weekday 函数:返回表示星期几的数值。
WeekdayName 函数:返回表示星期几的字符串。
Year 函数:返回表示年份的数值。
21.VBS响应事件
例:
Set objie=WScript.CreateObject("InternetExplorer.Application","event_")
objie.Visible=True
‘打开一个IE窗口
MsgBox "请关闭浏览器窗口看看效果!",vbSystemModal
Wscript.sleep 6000
MsgBox "现在已经正常关闭了"
Sub event_onquit()
MsgBox "您确定要关闭浏览器吗?",vbSystemModal
End Sub
22.VBS的WMI和WMIC的应用
注意:学习WMI,Windows提供了wbemtest即Windows管理规范测试器(要好好学)。
在WMIC中加强对全局开关、别名、动词、命令和丰富的命令行帮助增强用户接口。
例1:列出远程计算机上的所有进程(在CMD)
Wmic /node:ip /user:username /password:pw process list full
或
Wmic /output:输出路径 /node:ip /user:username /password:pw process list full /format:hform.xsl
node、user、password、output、format都是全局开关,output是将信息保存到哪;format是以什么格式输出,至于格式的掌握,可以参考\system32\wbem目录中的*.xsl文件
process是别名,别名是用户和WMI名称空间一个简化语法的中间层,当有别名时,动词表示它要执行的动作
List和full是动词
例2:关闭本地进程(也可以关闭远程进程)
wmic process where name=”qq.exe” call terminate
Process是别名
call是动词,它可以调出各种类的各种方法
where是完成查询和筛选,在众多实例中找到你需要的。实例是每个类的具体实现。
VBS操作WMI的基本步骤:
1。用createobject命令建立一个特殊对象wbemscripting.swbemlocator连接到对方的WMI
如:
set olct=createobject(“wbemscripting.swbemlocator”)
set wbemservices=olct.connectserver(strComputer,”root\cimv2”,strUser,strPwd)
‘strComputer:远程计算机的IP或计算机名
‘strUser和strPwd:远程计算机管理员的帐户
‘root\cimv2:是WMI的命名空间
2。得到对方WMI托管资源的实例,利用1中返回的对象wbemservices的某个方法ExecNotificationQuery查询所要的类,进而得到该类中的实例
Set colMonitorredPrecesses=webmservices._ExecNotificationQuer(“select * from_instancecreationevent”_&”within 1 where targetinstanceisa ‘win32_process’”)
3.通过colMonitoredProcesses.NextEvent来获取每一个具体的实例后,在显示它们具体的属性,就得到了自己希望的东西。
例:远程监控,建立以下内容的test.vbs文件
Set colArgs = WScript.Arguments
‘wscript.argument对象是用来“获取并处理脚本对象”
If WScript.arguments.count < 3 then
WScript.Echo "USAGE:" & vbCrLf & " Monitor Computer User Password files"
WScript.quit
End If
strComputer = wscript.arguments(0)
strUser = wscript.arguments(1)
strPwd = wscript.arguments(2)
strFile = wscript.arguments(3)
‘是为显示帮助和处理输入参数而存在的
set olct=createobject("wbemscripting.swbemlocator")
set wbemServices=olct.connectserver(strComputer,"root\cimv2",strUser,strPwd)
Set colMonitoredProcesses = wbemServices. _
ExecNotificationQuery("select * from __instancecreationevent " _
& " within 1 where TargetInstance isa 'Win32_Process'")
i = 0
Do While i = 0
Set objLatestProcess = colMonitoredProcesses.NextEvent
Wscript.Echo now & " " & objLatestProcess.TargetInstance.CommandLine
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objNewFile = objFS.OpenTextFile(strFile,8,true)
objNewFile.WriteLine Now() & " " & objLatestProcess.TargetInstance.CommandLine
‘至于那个NOW,虽然体积很小,但是却正是它给我们提供了时间这个重要的信息
objNewFile.Close
Loop
‘以上循环语句是死循环,为了一直监视对方…
在CMD下,cscript test.vbs 10.64.240.23 zkg 123 c:\txt
如果是监视本地机器,可改写为:
cscript test.vbs . “ “ “ “ c:\1.txt
‘ 点(.)代表本地机器,后面两个
如果不希望每次都输入cscript ,即只输入:test.vbs 10.64.240.23 zkg 123 c:\txt
可通过: cscript //nologo //h:cscript //s 来完成
补:cscript命令简介
cscript 用法
选项:
//B 批模式:不显示脚本错误及提示信息
//D 启用 Active Debugging
//E:engine 使用执行脚本的引擎
//H:CScript 将默认的脚本宿主改为 CScript.exe
//H:WScript 将默认的脚本宿主改为 WScript.exe (默认)
//I 交互模式(默认,与 //B 相对)
//Job:xxxx 执行一个 WSF 工作
//Logo 显示徽标(默认)
//Nologo 不显示徽标:执行时不显示标志
//S 为该用户保存当前命令行选项
//T:nn 超时设定秒:允许脚本运行的最长时间
//X 在调试器中执行脚本
//U 用 Unicode 表示来自控制台的重定向 I/O
在CMD下,执行cscript test.vbs ip/计算机名 username password 获取信息文本存储路径
‘其实可以在CMD下实时监控对方,但为了方便才设置“获取信息文本存储路径”
补充函数说明:
WScript.Echo,就是输出用的。
WScript.Quit 用来退出宿主,遇到这句后下面都不解释了。有些程序会检查参数,如果参数个数错误或者参数不符合要求就会提示用法,然后调用 WScript.Quit 退出。
WScript.Sleep 使宿主休眠一段时间,单位是毫秒,相当于 Win32 API 的 Sleep 函数。它可以用来等待,防止 CPU 占用率过高。
WScript.StdIn、WScript.StdOut、WScript.StdErr,只有 CUI 版的宿主 CScript.exe 支持,可以得到 Console 窗口的输入、输出和错误句柄对象,前面也略有提过。
最厉害的应该是 WScript.CreateObject、WScript.GetObject、WScript.ConnectObject、WScript.DisconnectObject 这几个用来和 COM 打交道的函数了。
需要注意的是 WScript.CreateObject 和 VBS 语言自带的 CreateObject 函数是不一样的,他们的具体差别以后再说
《以下学习笔记来源于http://www.killdu.cn》
第1章 VBScript基础
一、VBS基础汇总
。变量:占位符,引用计算机内存地址,该地址用来存储变量的值。
。变量命名规则:第1个字符必须是字母。
。标量变量:只有一个值的变量。
。ReDim Array( )会对数组中的数据破坏,可通过ReDim Preserve Array( )保护。
。Const date=#1-4-2008# ‘定义日期常量
。VarType( )函数:用于返回数据Variant的子类型。
。过程分两类:Sub和Function。Sub……End Sub/Function……End Function。
。有括号()先括号,算术运算符优于比较运算符,后者由于逻辑运算符。
Is运算符是对象引用比较运算符,它不是比较对象或对象的值,而只是判断两个对象
引用是否引用同一个对象。
第2章 文件与注册表操作
一、FileSystemObject(FSO)对象模式下的对象和集合
FileSystemObject:主要操作文件系统,如:磁盘驱动器、文件和文件夹的属性和方
法。
Drive:磁盘驱动器,可以是硬盘也可以是活动存储介质、CDROM,如:共享磁盘或
可用空间
等。
Drives:磁盘驱动器列表。
File:文件的属性和方法,如:文件大小、路径、创建或修改时间等。
Files:文件集合,如:某文件夹下的文件列表。
Folder:文件夹的属性和方法,如:列出文件夹下的列表或其路径。
Folders:文件夹集合,当然也可以列出集合下的所有文件列表。
TextStream:对象,用来读取文本文件。
二、代码在Web中的语法规则
Option Explicit写在首行;
代码部分写在<body> </body>之间,并用<%...%>封装起来。
三、常规文件操作
此帖被 +17 点积分 点击查看详情 评分人:【 lxmxn 】 | 分数: +8 | 时间:2008-10-30 10:59 | 评分人:【 s11ss 】 | 分数: +9 | 时间:2008-11-3 10:09 |
|
|
|