VBScript入门篇
VBScript入门篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.定义一个过程
定义一个过程:可以将相同的操作的代码提取出来,方便其他人来调用这段代码,可以减少你的代码的重复性 Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com '定义一个数组
Dim ary_1()
ary_1() =
ary_1() =
ary_1() = '定义一个过程的方法,Sub表示一个过程的开始,End Sub表示一个过程的结束标识符
Sub max_number(num_1,num_2,num_3)
Dim max
If num_1 > num_2 Then
max = num_1
Else
max = num_2
End If
If num_3 > max Then max = num_3
MsgBox "最大值是:" & max
End Sub '调用一个过程的方法,用call方法实现,或者是不用,两种区别不大,就是前者有括号,后者无括号
Call max_number(,,) '需要用括号将参数传递进去
Call max_number(ary_1(),ary_1(),ary_1())
max_number ,, '如果不用call调用过程的话,后面传参不需要用括号包裹起来。
二.定义一个函数
定义一个函数: Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com '定义一个数组
Dim ary_1(),max
ary_1() =
ary_1() =
ary_1() = '定义一个函数,Function表示函数的开始标识符,End Function 表示函数的结束标识符.sub(过程)能实现的Function(函数)都能实现,而且Function比sub功能更加强大,因为它有返回值,请看案例:
Function max_number(num_1,num_2,num_3)
If num_1 > num_2 Then
max_number = num_1
Else
max_number = num_2
End If
If num_3 > max Then max_number = num_3
'Exit Function表示退出函数
End Function '调用函数的方法
max = max_number(ary_1(),ary_1(),ary_1())
MsgBox "最大值是:" & max
三.ByRef 和 ByVal 语句区别:
ByRef 和 ByVal 语句区别: Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com '定义一个数组
Dim ary_1(),max
ary_1() =
ary_1() =
ary_1() = Function max_number(byval num_1,byref num_2,num_3)
MsgBox num_1 & "#" & num_2
num_1 =
num_2 = MsgBox num_1 & "#" & num_2
End Function max_number ary_1(),ary_1(),ary_1()
MsgBox ary_1() & "#" & ary_1() '通过以上的这个案例,我们可以总结如下:
'ByVal :表示该参数是按值方式传递的。这个只能让局部生效
'ByRef :表示该参数按引用方式传递。表示在局部变量如果改动了某个变量的值,那么会全局生效!
'所以不建议用ByRef,因为你只要稍微不注意,就会在全局改变这个变量,我们一般使用的是ByVal
五.变量的作用域与存活期
变量的作用域由声明它的位置决定。如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并且是过程级变量。如果在过程之外声明变量,则该变量可以被脚本中所有过程所识别,称为 Script 级变量,具有脚本级作用域。我们可以通过一个脚本来判断作用域,方便我们理解
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim num num = getmax MsgBox num '全局变量 Function getmax()
Dim num
num = '局部变量,而且局部变量的名称和全局变量名称重复
MsgBox num
num = '修改局部变量所对应的值
MsgBox num
End Function '建议实际生产环节中不要在局部变量和全局变量的变量名定义相同的哟,我这里是为了测试,方便大家理解。
变量存在的时间称为存活期。Script 级变量的存活期从被声明的一刻起,直到脚本运行结束。对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。可以在不同过程中使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim ary_1(),max
ary_1() =
ary_1() =
ary_1() = '获取两个值中的最大值
Public Function get_num(num_1,num_2)
pass '我是为了举列子,此处就用pass代替代码了
End Function Public Function get_max(num_1,num_2)
get_num , '调用Public类的函数,不会报错!
End Function
Public 公有的属性可以被其他函数调用
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim ary_1(),max
ary_1() =
ary_1() =
ary_1() = '获取两个值中的最大值
private Function get_num(num_1,num_2) '表示定义私有属性,不能被调用!
pass
End Function Public Function get_max(num_1,num_2)
get_num , '调用private类的函数会报错!不要这么干哟!
End Function
private 私有的属性不能被其他函数调用!
六.对象的介绍
对象:严格地说,对象是复杂数据和程序结构在内存中的表现,只有在程序运行时才存在。包含有方法和属性。其实就是一种封装的概念,它把事物封装成一个类,然后提供类的接口,而具体的过程人们是看不到的。
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com 'vbs创建对象概念
'要使用一个对象,必须先用专门的命令创建一个对象。在一个对象实例化时,会在内存中生成一份那个对象的拷贝,同时会将指向该对象的指针(也被称为引用)存放到您申明该对象的变量中。使用Set和CreateObject()函数实例化对象,并将引用存放到申明的变量中。
Dim objdict,objFSO,objFolder
Set objdict = createobject("Scripting.Dictionary") '创建一个对象,您也可以理解成实例化一个对象 'Set的唯一用途是实例化对象变量(存放指向该对象的引用)。
'CreateObject()完成的是创建对象的工作。使用该函数,都必须将您想要实例化的对象的标识符(prog id)传达给它,对象的库和类的名称一起构成可prog id. 'Scripting是脚本运行时库(一些单独的组件)。有些库中的某些对象只能通过库中其他对象创建,FileSystemObject就是这样一个中介类。
'Folder对象就是这样一个对象。 Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Users\yinzhengjie") '注意:此处输入的路径必须是系统中存在的哟,不然你随便输入一个不存在的路径打印的时候回报错的哟!!
MsgBox objFolder
vbs创建对象用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim my_phone,
Set my_phone = CreateObject("phone_number") 'set其实就是实例化一个类,如果不存在“phone_number”这个类的话就会报错,所以我们在实例化的时候要看你是否已经自定义过这个类哟
my_phone.email = "y1053419035@qq.com" '表示对“my_phone”定义一个“email”方法。
my_phone.number = "153****5200" MsgBox my_phone.email
如何实例化自定义的类
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim myphone
Set myphone = Nothing '释放内存,不写也是可以的,因为在脚本运行结束时会自动释放掉内存,不过建议还是写上哟~
释放内存展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com '1.属性:
' . 的作用
' 只读 /可写/只读+可写 '2.方法:
' . 的作用
' 与函数的使用方法类似
对象的用法
七.WScript.Shell对象
可以用于获取系统环境变量的访问、创建快捷方式、访问Windows的特殊文件夹,如Windows Desktop,以及添加或删除注册表条目。还可以使用Shell对象的功能创建更多的定制对话框以进行用户交互。
WshShell对象有三个属性介绍:
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com WshShell对象有三个属性:
>● CurrentDirectory; '当前目录路径,是绝对路径 >● Environment; '获取系统环境变量 >● SpecialFolders; '获取特殊文件夹路径,如:桌面,system32等等
WshShell对象有11个方法介绍:
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com WshShell对象有11个方法:
● AppActivate
'激活窗口
● CreateShortcut
' 创建快捷方式用的
● ExpandEnvironmentStrings
'扩充的环境变量的字符串
● LogEvent
' 记录日志事件
● Popup
' 与msgbox功能类似,只不过msgbox需要用户点击才能消失对话框,而这个有自动消失的功能
● RegDelete
' 删除注册表的某个键值
● RegRead
' 读取注册表的某个键值
● RegWrite
' 写入注册表的某个键值
● Run
'可以运行一个cmd的字符串
● SendKeys
'模拟键盘输入,功能相当强大
● Exec
' 与run很类似,可以参考vbscript程序员参考手册
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim windows_shell,desktop,object_link Set windows_shell = CreateObject("WScript.Shell") '创建一个对象(实例化)
desktop = windows_shell.SpecialFolders("Desktop") '使用SpecialFolders方法获取桌面的路径
'MsgBox desktop
Set object_link = windows_shell.CreateShortcut(desktop & "\yinzhengjie_cmd.lnk") '定义链接文件路径并且给他起了一个名字叫“yinzhengjie_cmd”,注意以“.lnk”结尾标志着链接文件哟 object_link.TargetPath = "C:\Windows\System32\cmd.exe" '源文件链接的绝对路径 object_link.WorkingDirectory = "C:\Windows\System32" '源文件的工作路径,也就是他的所在目录(父目录) object_link.save '保存以上的配置,因为以上代码只是将数据加入到缓存中,并没有将数据写入磁盘中去,所以这个步骤是必须的! Set windows_shell = Nothing '以上代码执行完毕后,需要释放掉内存地址。
Set desktop = Nothing
Set object_link = Nothing
利用WScript.Shell对象创建一个cmd快捷方式
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim windows_shell Set windows_shell = CreateObject("WScript.Shell") '创建一个对象(实例化) MsgBox "我是msgbox" '会打印"我是msgbox" ,直到你点击“确定”按钮才能走以下的代码 windows_shell.Popup "我是popup", '会打印"我是popup",并在2s后退出程序。 Set windows_shell = Nothing
MsgBox 与Popup 用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim windows_shell Set windows_shell = CreateObject("WScript.Shell") '创建一个对象(实例化) windows_shell.Run "cmd" '运行"cmd"命令,会弹出一个cmd对话框, WScript.Sleep '表示延时100ms(毫秒)后再执行以下的代码,就是让程序睡一会,一般电脑卡可以这么干,因为同事打开多个文件会卡顿呢! windows_shell.Run "notepad" '打开一个记事本 Set windows_shell = Nothing
Run发放的应用展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com '程序员如何表白?嘻嘻~装逼的时刻来了,拿起键盘跟着哥的节奏撸起来! Dim windows_shell
Set windows_shell = CreateObject("WScript.Shell") '创建一个对象(实例化)
windows_shell.Run "notepad" '打开一个记事本 WScript.Sleep '表示延时100ms(毫秒)后再执行以下的代码,就是让程序睡一会,一般电脑卡可以这么干,因为同事打开多个文件会卡顿呢! windows_shell.SendKeys "I" '打开笔记本程序后,会自动输入一个"I"的字符串进去,下面原理一样的,最终会呈现一个打开记事本呈现自动输入一些字符串进去。 WScript.Sleep '让程序睡1000ms,也就是睡1s windows_shell.SendKeys " "
WScript.Sleep
windows_shell.SendKeys "L"
WScript.Sleep
windows_shell.SendKeys "O"
WScript.Sleep
windows_shell.SendKeys "V"
WScript.Sleep
windows_shell.SendKeys "E"
WScript.Sleep
windows_shell.SendKeys " "
WScript.Sleep
windows_shell.SendKeys "Y"
WScript.Sleep
windows_shell.SendKeys "O"
WScript.Sleep
windows_shell.SendKeys "U"
WScript.Sleep
windows_shell.SendKeys " "
WScript.Sleep Set windows_shell = Nothing
表白记事本案例展示
八.FileSystemObject对象
FileSystemObject (FSO) 对象模型,允许对大量的属性、方法和事件,使用较熟悉的 object.method 语法,来处理文件夹和文件。
作用: FSO 对象模型使应用程序能创建、改变、移动和删除文件夹,或探测特定的文件夹是否存在,若存在,还可以找出有关文件夹的信息,如名称、被创建或最后一次修改的日期,等等。
1.文件/文件夹复制、移动、重命名
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com 复制:Copy()、CopyFile () 、CopyFolder () 移动:Move()、MoveFile ()、MoveFolder () 重命名:object.Name [= newname]
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file Set file = CreateObject("Scripting.filesystemobject") '实例化 file.CopyFile "E:\装饰器.txt","E:\python文档\" '这个步骤是将“E:\装饰器.txt”这个文件移动到"E:\python文档\",一定要注意最后的“\”,不然会报错的哟 Set file = Nothing
CopyFile用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file Set file = CreateObject("Scripting.filesystemobject") '实例化 file.MoveFile "E:\装饰器.txt","E:\python文档\" '这个步骤是将“E:\装饰器.txt”这个文件移动到"E:\python文档\",一定要注意最后的“\”,不然会报错的哟 Set file = Nothing
MoveFile用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,filepath Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\装饰器.txt"
If file.FileExists("E:\python文档\装饰器.txt") Then '判断文件"E:\python文档\装饰器.txt"是否存在,如果存在执行以下代码
MsgBox "文件已存在"
Else
file.MoveFile filepath,"E:\python文档\" '如果直接移动或者复制一个文件的话,当目标目录已经存在该文件就会报错, End If
Set file = Nothing
FileExists用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,filepath,f Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\装饰器.txt" Set f = file.GetFile(filepath) '获取文件的源文件绝对路径 f.Copy("E:\python文档\decorator.txt") '方法一,拷贝文件的时候更改文件名称 f.Name = "decorator_note" '方法二,不用copy文件,而是直接给上面定义好的文件绝对路径找到那个文件对象f,并给那个文件改名字。如果要改名的建议用方法二。 Set file = Nothing Set f = Nothing Name用法展示
GetFile修改文件名用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,folderpath,f Set file = CreateObject("Scripting.filesystemobject") '实例化 folderpath = "E:\python文档" Set f = file.GetFolder(folderpath) f.Name = "python自动换运维之路" '重命名文件夹。
MsgBox "已经成功修改文件夹名称" Set file = Nothing
Set f = Nothing
Set folderpath = Nothing
GetFolder修改文件夹名称用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,filepath,f Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动换运维之路\decorator.txt" Set f = file.GetFile(filepath) '获取文件的源文件绝对路径 MsgBox "文件大小:" & f.Size '注意:size返回的是字节哟 Set file = Nothing Set f = Nothing
Size方法用法展示
2.文件读取/写入
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com 第一步:OpenTextFile()
或者OpenAsTextStream()
第二步:Read 方法
或者ReadAll 方法
或者ReadLine 方法 Write 方法
WriteBlankLines 方法
WriteLine 方法
写入数据到文件方法展示如下:
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,filepath,f Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动换运维之路\生成器.exe" '定义一个文件的绝对路径和名称,注意:“.txt”表示文本文件,”.exe“表示被打包的二进制文件. Set f = file.CreateTextFile(filepath) '创建一个文件 MsgBox "文件创建成功" Set file = Nothing Set f = Nothing
CreateTextFile创建文件用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,filepath,f,i Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动换运维之路\生成器.txt" '定义一个文件的绝对路径和名称,注意:“.txt”表示文本文件,”.exe“表示被打包的二进制文件. Set f = file.CreateTextFile(filepath) '创建一个文件
MsgBox "文件创建成功" For i = To
f.Write i '会把数字连续写进去,不会自动换行。
Next f.Close '关闭文件,可以将写入的东西存入硬盘中。
MsgBox "文件写入成功" Set file = Nothing Set f = Nothing
Write用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,filepath,f,i,str Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动换运维之路\生成器.txt" '定义一个文件的绝对路径和名称,注意:“.txt”表示文本文件,”.exe“表示被打包的二进制文件. Set f = file.CreateTextFile(filepath) '创建一个文件,注意:如果存在该文件会直接覆盖源文件,用的时候要注意哟!
MsgBox "文件创建成功" For i = To
str = str & i & vbCrLf '其中vbCrLf是vbs内部的换行符
Next
f.Write str '将整个字符串一次性写入. f.Close '关闭文件,可以将写入的东西存入硬盘中。
MsgBox "文件写入成功" Set file = Nothing Set f = Nothing
Write 配合vbCrLf 用法展示,推荐这种写法,可以提高文件的写入效率
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,filepath,f,i,str Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动换运维之路\生成器.txt" '定义一个文件的绝对路径和名称,注意:“.txt”表示文本文件,”.exe“表示被打包的二进制文件. Set f = file.CreateTextFile(filepath) '创建一个文件,注意:如果存在该文件会直接覆盖源文件,用的时候要注意哟!
MsgBox "文件创建成功" For i = To
f.Write i
f.WriteBlankLines '表示写入2个回车符号,所以他的功能就是一个换行功能而已
Next
f.Write str '将整个字符串一次性写入. f.Close '关闭文件,可以将写入的东西存入硬盘中。
MsgBox "文件写入成功" Set file = Nothing Set f = Nothing
WriteBlankLines用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,filepath,f,i Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动换运维之路\生成器.txt" '定义一个文件的绝对路径和名称,注意:“.txt”表示文本文件,”.exe“表示被打包的二进制文件. Set f = file.CreateTextFile(filepath) '创建一个文件
MsgBox "文件创建成功" For i = To
f.WriteLine i
Next f.Close '关闭文件,可以将写入的东西存入硬盘中。
MsgBox "文件写入成功" Set file = Nothing Set f = Nothing
WriteLine用法展示
读取文件内容的方法展示如下:
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Const forreading = '这个是openTextFile定义权限的方法,具体对应关系请看下面介绍
'ForReading 1 以只读方式打开文件。不能写这个文件。
'ForWriting 2 以写方式打开文件
'ForAppending 8 打开文件并从文件末尾开始写。 Dim file,filepath,f,i,str Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动换运维之路\生成器.txt" '定义需要打开的文件,这个文件必须存在,不然会报错哟。 Set f = file.openTextFile(filepath,forreading) '直接打开这个文件,根据上面的变量可知应该是只读的方式打开。当然我们也可以判断文件是否存在,如果存在再打开,否则提示文件不存在即可。
MsgBox "打开文件成功"
str = f.ReadAll f.Close '关闭文件,可以将写入的东西存入硬盘中。
MsgBox "点击确定按钮显示文件内容"
MsgBox str Set file = Nothing Set f = Nothing
openTextFile以及ReadAll用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Const forreading = '这个是openTextFile定义权限的方法,具体对应关系请看下面介绍
'ForReading 1 以只读方式打开文件。不能写这个文件。
'ForWriting 2 以写方式打开文件
'ForAppending 8 打开文件并从文件末尾开始写。 Dim file,filepath,f,i,str Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动换运维之路\装饰器.txt" '定义需要打开的文件,这个文件必须存在,不然会报错哟。 Set f = file.openTextFile(filepath,forreading) '直接打开这个文件,根据上面的变量可知应该是只读的方式打开。当然我们也可以判断文件是否存在,如果存在再打开,否则提示文件不存在即可。
MsgBox "打开文件成功" MsgBox f.Read() '表示从开始移动光标2位,即读取2个字符。
MsgBox f.ReadLine '表示从上次读取的光标位置开始读取一整行。
str = f.ReadAll '表示从文件开头开始读取数据。 f.Close '关闭文件,可以将写入的东西存入硬盘中。
MsgBox "点击确定按钮显示文件内容"
MsgBox str Set file = Nothing Set f = Nothing
Read与ReadLine还有ReadAll 的区别
3.文件夹、驱动器集合
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,fc,f1,f Set file = CreateObject("Scripting.filesystemobject") '实例化 Set f = file.GetFolder("E:\python自动换运维之路\") '定义一个路径
Set fc = f.Files '获取该路径下的所有文件,但是不包含目录 For Each f1 In fc '表示遍历这个fc变量
MsgBox f1.Name '打印fc这个变量中存放的每一个文件名称,包括隐藏文件哟!
Next Set file = Nothing Set f = Nothing
Set fc =Nothing
Files以及For Each...Next用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file,fc,f1,f Set file = CreateObject("Scripting.filesystemobject") '实例化 Set f = file.GetFolder("E:\python自动换运维之路\") '定义一个路径
Set fc = f.SubFolders '获取该路径下的所有文件夹,但是不包含目录 For Each f1 In fc '表示遍历这个fc变量
MsgBox f1.Name '打印fc这个变量中存放的每一个文件夹名称,包括隐藏文件夹哟!
Next Set file = Nothing Set f = Nothing
Set fc =Nothing
SubFolders用法展示
4.FSO实例
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Const forreading =
Const Forwriting =
Dim file,f,filepath,i,str
Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动化运维之路\函数\decorator.txt" '定义需要问去的文件
Set f = file.OpenTextFile(filepath,forreading) '由于OpenTextFile只支持三种种方式打开,我们先以只读的方式打开,相当于python3中的“r” While f.AtEndOfStream <> True '这里是利用“AtEndOfStream”属性判断文件是否到末尾,如果到末尾就会返回True.没有到末尾就一直循环读取每一行。
i = i + '给变量赋初值为1,不赋值的话默认为0
str = str & "第" & i & "行内容是>>>:" & _
f.ReadLine & vbCrLf '这里是一个换行符和一个回车符的应用,将文件的内容拼接起来。
Wend f.Close '读取文件完毕后要关闭源文件
MsgBox str
Set f = file.OpenTextFile(filepath,Forwriting) '这是是写入的方式打开,注意打开的时候回把已经存在的文件给清空掉,相当于python3中的"w"
f.Write str '将读取的数据重写写入文件中
f.Close MsgBox "写入成功" Set file = Nothing
Set f = Nothing
Set filepath = Nothing
Set str = Nothing
Forwriting以及AtEndOfStream 的用法展示(添加行号)
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Const forreading =
Const Forwriting =
Const forappending =
Dim file,f,filepath,i,str
Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动化运维之路\函数\decorator.txt" '定义需要问去的文件
Set f = file.OpenTextFile(filepath,forreading) '由于OpenTextFile只支持三种种方式打开,我们先以只读的方式打开,相当于python3中的“r” While f.AtEndOfStream <> True '这里是利用“AtEndOfStream”属性判断文件是否到末尾,如果到末尾就会返回True.没有到末尾就一直循环读取每一行。
i = i + '给变量赋初值为1,不赋值的话默认为0
str = str & "第" & i & "行内容是>>>:" & _
f.ReadLine & vbCrLf '这里是一个换行符和一个回车符的应用,将文件的内容拼接起来。
Wend f.Close '读取文件完毕后要关闭源文件
MsgBox str
Set f = file.OpenTextFile(filepath,forappending) '这是以追加的方式打开文件,相当于python3中的“a”
f.Write str '将读取的数据重写写入文件中
f.Close MsgBox "写入成功" Set file = Nothing
Set f = Nothing
Set filepath = Nothing
Set str = Nothing
forappending用法展示
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Const hidden = 'const是设置属性的一个参数,hidden=2 表示隐藏属性,具体的可以参考以下解释哟
'常数 值 描述
'Normal 0 普通文件。不设置属性。
'ReadOnly 1 只读文件。属性为读/写。
'Hidden 2 隐藏文件。属性为读/写。
'System 4 系统文件。属性为读/写。
'Volume 8 磁盘驱动器卷标。属性为只读。
'Directory 16 文件夹或目录。属性为只读。
'Archive 32 文件在上次备份后已经修改。属性为读/写。
'Alias 64 链接或者快捷方式。属性为只读。
'Compressed 128 压缩文件。属性为只读。 Dim file,f,filepath,i,str
Set file = CreateObject("Scripting.filesystemobject") '实例化 filepath = "E:\python自动化运维之路\函数\decorator.txt" '定义需要问去的文件 Set f = file.GetFile(filepath) '获取目标文件,然后方便对其进行属性设置操作 f.Attributes = hidden MsgBox "成功隐藏" & filepath Set file = Nothing
Set f = Nothing
Set filepath = Nothing
Set str = Nothing
Attributes隐藏一个文件案例展示
九.小试牛刀
目前刚刚入门,勉强写了一下2个备份脚本,可惜没有查到用vbs判断ftp目录下是否存在某个路径,不然就可以将以下2个脚本的特色合二为一了。如果有哪位大神指导,欢迎在我的博客留下珍贵的脚印,感激不尽啊~哈哈~
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com
Dim file,f1,i,j,f,soucepath,backpath,flag
Set file = CreateObject("Scripting.filesystemobject")
soucepath = "E:\python自动化运维之路\" '定义源文件目录
backpath = "E:\bakcup\" '定义将要非分的目录
Set f = file.GetFolder(soucepath)
Set f1 = file.GetFolder(backpath)
For Each i In f.Files '遍历f这个目录
flag = '定义一个标志位,用于判断是match到相应的文件.
For Each j In f1.Files '遍历f1这个目录
If i.Name = j.Name Then
'MsgBox j.Name & "文件已存在"
flag = ’'如果在备份的牧流中存在这个变量,就讲标志位改为1
Exit For 'match到后退出循环
End If
Next
If flag = Then '如果没有匹配到,则flag = 0,就可以执行以下的copy
'MsgBox i.Name & "文件不存在"
file.CopyFile soucepath & i.Name,backpath '没有文件就拷贝文件到目标目录中去
End If
Next Set file = Nothing '释放掉内存
Set f = Nothing
Set f1 = Nothing
Set flag = Nothing
Set soucepath = Nothing
Set backpath = Nothing
本地文件备份脚本
Option Explicit
'@author :yinzhengjie
'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/
'EMAIL:y1053419035@qq.com Dim file, WSHshell,configFile,backupFiles,objFile
Set file = CreateObject("Scripting.FileSystemObject")
set WSHshell=CreateObject("WScript.Shell")
Set configFile = file.opentextfile("E:\bakcup\yinzhengjie.txt",,True) '以写的权限打开一个文件,如果文件不存在就创建(因为后面指定了“True”)
configFile.WriteLine("OPEN 172.16.96.205") '需要输入ftp服务器的地址
configFile.WriteLine("yzj") 'ftp服务器的用户
configFile.WriteLine("") 'ftp服务器的密码
configFile.WriteLine("binary") '表示传输文件用二进制传输。
configFile.WriteLine("prompt") '表示关闭交互模式,因为默认是开启交互模式的,
Set backupFiles = file.GetFolder("E:\bakcup\").Files '定义一个需要非
For Each objFile in backupFiles '遍历objFiles目录下的所有文件,包括隐藏文件。
configFile.WriteLine("mput " & objFile.Path) '上传文件到服务器上去。
Next
configFile.WriteLine("quit") '与服务器断开链接的指令。
configFile.Close '关闭文件。
WSHshell.Run "ftp -s:" & "E:\bakcup\yinzhengjie.txt", , true '这个是调用WSHshell.Run方法去执行cmd的命令,以此来启动链接ftp的文件。
Set configFile = Nothing '释放configFile掉内存,以下同理
Set WSHshell = Nothing
Set file = Nothing '''
'友情提示:
' 1.根据以上备注信息修改相应参数;
' 2.需要在windows周期计划任务中添加自动执行时间。
' 3.由于是vbscript新手,欢迎大神指点程序需要修改的地方。百度了很久没有找到判断ftp目录是否存在某个文件的方法,后期如果哪位大神找到了请在我的博客告知我,那样的话我可以再优化一下这个脚本。
' 4.原链接地址:http://www.cnblogs.com/yinzhengjie/p/6597685.html
'''
本地文件备份到ftp服务器上的脚本
' 你已经看到了这里,那么VBScript你就算是入门了,其实,我这里举例子仅仅都是冰山一角,FileSystemObject的用法还有很多,其功能特别强大,感兴趣的朋友可以研究一下。想要了解更多vsscript用法请参考:http://www.cnblogs.com/yinzhengjie/p/6604253.html
VBScript入门篇的更多相关文章
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 1. web前端开发分享-css,js入门篇
关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...
- 一个App完成入门篇(七)- 完成发现页面
第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...
- [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界
本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...
- 转:OSGi 入门篇:模块层
OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...
- 转:OSGi 入门篇:生命周期层
OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或 ...
- 【three.js详解之一】入门篇
[three.js详解之一]入门篇 开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...
- [Maven]Apache Maven 入门篇
作者:George Ma 上 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这个入门篇分上下两篇.本文着重动手,用 ma ...
随机推荐
- VIM编辑器常用命令(转)
转自:https://www.cnblogs.com/Nice-Boy/p/6124177.html
- 剑指offer:复杂链表的复制
题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用, ...
- 第三个Sprint冲刺第七天(燃尽图)
- Spring配置常识
(1)数据源配置 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" ...
- Activiti解析.bpmn文件获得User Task节点的CandidateUsers特性的值
参考文档: http://www.cnblogs.com/mingforyou/p/5351332.html http://blog.csdn.net/jackyrongvip/article/det ...
- 用IntelliJ IDEA编译,编译之后提示 无效的标记: -release
软件版本:ideaIU-2016.3.2 JDK:jdk-9.0.4_windows-x64_bin 开始的时候建立一个maven项目,发现编译的时候提示[无效的标记: -release],以为是项目 ...
- [转帖]Linux的进程线程及调度
Linux的进程线程及调度 本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10393707.html 本文为宋宝华<Linux的进程 ...
- Vue 初识Vue
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- File操作
对文件进行操作(只操作小文件) bool Exists(string path) 判断文件是否存在 FileStream Create(string path) 创建文件 void Move(stri ...
- sakila数据库及其他数据库实例文件
下载地址: https://dev.mysql.com/doc/index-other.html Other MySQL Documentation This page provides additi ...