返回列表 发帖

[原创] VBS基础(4)WSH编程实例

前面的基础知识学完了,实践喽!转载请注明 bbs.bathome.net
一:你好!WSH
程序知识点
*MsgBox函数
语法:MsgBox(prompt[,buttons][.title][,helpfile,context])
程序源代码:
WelcomeMessage="你好!WSH!"
WelcomeText="Windows Scripting Host 实例"
MsgBox WelcomeMessage,vbInformation,WeclomeText
二:显示文本信息
概述:介绍File文件对象技术的另一些应用,其中涉及到Type属性(文件类型),Size属性(文件大小)和DateLastAccessed属性(文件最后被访问时间)
程序源代码:
'定义一个dispfile函数
function dispfile(fn)
Dim fi
Dim att
On Error resume next
'获取file对象
Set fi=fs.GetFile(fn)
'清空att字符串
att=""
//126
'将文件名称,文件类型,大小,最后访问时间的信息加入att
att=att+fn+":"+vbcrlf
att=att+"文件类型:"+fi.Type+vbcrlf
att=att+"文件最后访问时间:"+cStr(fi.DateLastAccessed)+vbcrlf
dispfile=att
End function
Set fs=CreateObject("Scripting.FileSystemObject")
Dim fileinfor
fileinfor=""
'调用dispfile函数获取c:\io.sys的文件信息
fileinfor=fileinfor+dispfile("c:\io.sys")+vbcrlf
Set fo=fs.GetSpecialFolder(WindowFolder)
fileinfor=fileinfor+dispfile(fo.Path+"\win.ini")+vbcrlf
fileinfor=fileinfor+dispfile(fo.Path+"\system.ini")+vbcrlf
MsgBox fileinfor,vbinformation,"WSH显示文本信息"
三.显示驱动器信息。
概述:已经知道利用对象技术,WSH程序可以获取系统信息,网络信息,网络信息,而驱动器对象可以提供详细的驱动器信息
本节介绍的知识点:
GetDrive方法
DriveType属性
IsReady属性
FreeSpace属性
TotalSize属性
FileSystem属性
SerialNumber属性
ShareName属性
DriveLetter属性
VolumeName属性
Drives集合
For Each  Next语句
程序知识点:
*GetDrive方法
返回一个与指定路径中的驱动器相对应的Drive对象。
语法:object.GetDrive drivespec
参数:object始终是一个FileSystemObject的名字
Drivespec:可以是C:  C    C:\或任何网络的说明(\\computer2\share1)
ps:对于共享,要进行检查以确保共享的存在。
*DriveType属性
返回一个值,表示指定驱动器的类型。
语法:object.DriveType
例子:
Sub ShowDriveType(drvpath)
Dim fs,d,s,t
Set fs=CreateObject("Scripting.FileSystemObject")
Set d=fs.GetDrive(drvpath)
Select Case d.DriveType
  Case 0:t="Unknown"
  Case 1:t="Removable"
  Case 2:t="Fixed"
  Case 3:t="Network"
  Case 4:t="CD-ROM"
  Case 5:t="RAM Disk"
End Select
s="Drive"&d.DriveLetter&":-"&t
MsgBox s
End Sub
*IsReady属性。
如果指定的驱动器已准备好,返回True;否则返回False
语法:object.IsReady
*FreeSpace属性
返回指定的驱动器或网络共享的用户可用磁盘剩余空间容量。只读。
语法:object.FreeSpace
*TotalSize
以字节为单位,返回驱动器或网络共享的总空间大小。
*FileSystem属性。
返回指定驱动器所使用的文件类型。
object.FileSystem
返回类型包括FAT,NTFS,以及CDFS
*SeriousNumber属性。
返回用于唯一标识磁盘卷标的十进制序列号。
object.SerialNumber
*ShareName属性。
返回指定驱动器的网络共享名。
*DriveLetter
返回麽个物理本地驱动器或共享的驱动器字母。
*VolumeName属性。
设置或返回指定驱动器的卷标名。读/写属性。
语句:object.VolumeName[=newname]
*Drives集合。
所有可用驱动器的只读集合。
*For Each  Next
程序源代码分析。
'写文本文件的子程序
Sub writefile(detail)
Set fs=CreateObject("Scripting.FileSystemObject")
set file=fs.CreateTextFile("驱动器信息.txt",True)
file.Write detail
file.Close
  Set fs=nothing
End Sub
Sub dispdrvstat(drvname)
Dim dn
dn=Left(drvname,1)
Set drv=fso.GetDrive(dn)
With drv
Select Case DriveType
Case 1
dn="软盘"
Case 2
dn="硬盘"
Case 4
dn="光盘"
End Select
'将驱动器的各项信息加入drvinfo字符串
drvinfo=drvinfo+"驱动器类型:"+dn+vbcrlf
If.IsReady Then
drvinfo=drvinfo+"驱动器情况:以准备"+dn+vbcrlf
drvinfo=drvinfo+"驱动器未用容量:"+cStr(.FreeSpace/1024/1024)+"MB"+vbcrlf
drvinfo=drvinfo+"驱动器全部容量:"+cStr(.TotalSize/1024/1024)+"MB"+vbcrlf
drvinfo=drvinfo+"驱动器文件系统:".FileSystem+vbcrlf
drvinfo=drvinfo+"驱动器序列号:"+cStr(.SerialNumber)+vbcrlf
drvinfo=drvinfo+"驱动器共享名:"+.ShareName+vbcrlf
Else
drvinfo=drvinfo+"驱动器情况:未准备"+vbcrlf
drvinfo=drvinfo+"驱动器共享名:"+.ShareName+vbcrlf
End If
End With
End Sub
'取所有驱动器对象的信息
Set fso=CreateObject("SCripting.FileSystemObject")
Dim drv
Dim drvs
Dim drvinfo
Set drvs=fso.Drives
For Each drv in drvs
  If drv.IsReady Then
   drvinfo=drvinfo+drv.DriveLetter+":\["+drv.VolumeName+"]"+vbcrlf
  Else
   drvinfo=drvinfo+drv.DriveLetter+":\"+vbcrlf
  End If
  Call dispdrvstat(drv.DriveLetter)
Next
Set fso=nothing
MsgBox drvinfo
Call writefile(drvinfo)
五:获取文件夹的信息。
1.概述:细说利用Folders集合获取文件夹信息的方法,以及Floders集合中的可用对象。同时在实例中也运用到Function过程的用法
2.知识点:
Floders集合
GetSpecialFolder方法
Function语句
Files集合
SubFolders属性
DateLastModified属性
Size属性
程序知识点
*Folders集合
包含在一个Folder对象内的所有Folder对象的集合。
例子:说明如何获得一个Folder集合,以及如何用 FOR EACH   NEXT语句来访问该集合中的每个Folder。
Sub ShowFolderList(folderspec)
Dim fs,f,fl,fc,s
Set fs=CreateObject("Scripting.FileSystemObject")
Set f=fs.GetFolder(folderspec)
Set fc=f.SubFolders
For Each fl in fc
  s=s&fl.name
  s=s&vbcrlf
Next
MsgBox s
End Sub
*GetSpecialFolder方法
返回指定的特殊文件夹。
语法:object.GetSpecialFolder(folderspec)
*Function语句。
声明Function过程的名称,参数以及构成其主体的代码。
*Files集合。
在一个文件夹内的所有File对象的集合。
例子:说明了如何获得一个Files集合。以及如何用For Each...Next语句来访问这个集合中的每个File:
Sub ShowFolderList(folderspec)
Dim fs,f,fl,fc,s
Set fs=CreateObject("Scripting.FileSystemObject")
Set f=fs.CreateFolder(folderspec)
For Each fl in fc
  s=s&fl.name
  s=s&vbcrlf
Next
MsgBox s
End Sub
*SubFolders属性。
返回包含所有文件夹的一个Folders集合,这些文件夹包含在某个特定的文件夹汇总。包括设置了隐藏和系统文件属性的那些文件夹。
语句:object.SubFolders  
object总是一个Folder对象。
*DateLastModified
返回最后一次修改指定文件或文件夹的日期和时间。只读。
语句:object.DateLastModified  
object总是一个Folder对象。
*Size属性
程序源代码
'定义一个folderattt(fo)过程
function folderatt(fo)
Dim att
On Error Resume Next
'将指定文件夹对象的文件数,子目录数和占用字节依次加入folderatt字符串
folderatt=folderatt+fo.name+"目录:"+vbcrlf
folderatt=folderatt+"该目录下的文件数:"+cStr(fo.Files.Count)+vbcrlf
folderatt=folderatt+"该目录下的子目录数:"+cStr(fo.SubFolders.Count)+vbcrlf
folderatt=folderatt+"该目录占用字节:"+cStr(fo.Size/1024/1024)+"MB"+vbcrlf
folderatt=folderatt+"该目录最后修改时间:"+cStr(fo.DateLastModified)+vbcrlf
End function
Dim dispatt
dispatt=""
Set fs=CreateObject("Scripting.FileSystemObject")
Set folder=fs.GetSpecialFolder(0)
dispatt=dispatt+folderatt(folder)
Set folder=fs.GetSpecialFolder(1)
dispatt=dispatt+folderatt(folder)
Set folder=fs.GetSpecialFolder(2)
dispatt=dispatt+folderatt(folder)
Set fs=nothing
MsgBox dispatt
六 获取系统和网络信息
源代码
Set WshNetwork=WScript.CreateObject("WScript.Network")
'设置EnumNetworkDrives参数集。
Set oDrives=WshNetwork.EnumNetworkDrives
'设置EnumPrinterConnection参数集
Set oPrinters=WshNetwork.EnumPrinterConnections
'获取域名
netinfo="域名:"+WshNetwork.UserDomain+chr(13)
'获取计算机名
netinfo="计算机名:"+WshNetwork.ComputerName+chr(13)
'获取用户名
netinfo="用户名:"+WshNetwork.UserName+chr(13)
WScript.Echo(netinfo)
netmap=""
For i=0 to oDrives.Count()-1 Step 2
netmap=netmap+"驱动器"+oDrives.Item(i)+"="+oDrives.Item(i+1)+chr(13)
Next
if netmap<>""Then
WScript.Echo("网络映射驱动器:"+chr(13)+netmap)
End If
netprn=""
For i=0 to oPrinters.Count-1 step 2
netprn=netprn+"端口: "+oPrinters.Item(i)+"="+oPrinters.Item(i+1)+chr(13)
Next
if netprn<>"" Then
WScript.Echo("网络打印机:"+chr(13)+netprn)
End IF
七:参数拖放操作。
知识点:Set语句
'设置objArgs为Arguments对象
Set objArgs=WScript.Arguments
For i=0 to objArgs.Count-1
WScript.Echo objArgs(i)
Next
八访问文本文件
知识点:
CreateTextFile方法
OpenTextFile方法
ReadLine方法
WriteLine方法
程序源代码:
Dim fs
Dim file
Sub writefile
Set fs=CreateObject("Scripting.FileSystemObject")
Set file=fs.CreateTextFile("wshwrite.txt",True)
file.WriteLine("Windows Scripting Host实例")
file.WriteLine("写文件实例")
file.Close
Set fs=nothing
End Sub
Sub readFile
ForReading=1
TristateFalse=0
Set fs=CreateObject("Scripting.FileSystemObject")
Set file=fs.OpenTextFile("wshwrite.txt",ForReading,TristateFalse)
MsgBox file.ReadLine
file.Close
Set fs=nothing
End Sub
writefile
readfile
九:显示环境变量
程序源代码:
Sub show_env(strText)
MsgBox strText,vbInformation,"WSH显示环境变量"
End Sub
Dim WSHShell
Set WSHShell=WScript.CreateObject("WScript.Shell")
intIndex=0
strText=""
For Each strEnv In WshShell.Environment("PROCESS")
intIndex=intIndex+1
strText=strText&vbcrlf&Right(" "&intIndex,4)&strEnv
Next
Call show_env(strText)
十:建立快捷方式
知识点:ActiveXObject对象。
*ActiveXObject对象
启用并为一个自动操作的对象返回参照。
语法:
var newObject=new ActiveXObject(class)
参数class的名称组成为servername.typename.
servername:提供对象的程序名称。
Typename:所要创建的对象的类型或类别。
程序源代码分析:
Set WshShell=WScript.CreateObject("WScript.Shell")
strDesktop=WshShell.SpecialFolders("Desktop")
Set oShellLink=WshShell.CreateShortCut(strDesktop&"\画笔.lnk")
oShellLink.TargetPath="mspaint.exe"
oShellLink.WindowStyle=1
oShellLink.Hotkey="CTRL+SHIFT+P"
oShellLink.IconLocation="mspaint.exe,0"
oShellLink.Description="由WSH建立的画笔快捷方式"
oShellLink.WorkingDirectory=strDesktop
oShellLink.Save
Set oUrLink=WshShell.CreateShortcut(strDesktop&"\武汉理工大学.url")
oUrLink.TargetPath="http://www.whut.edu.cn/"
oUrLink.Save
十一.模拟键盘输入.
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "calc"
WScript.Sleep 100
WshShell.AppActivate "Calculator"
WScript.Sleep 100
WshShell.SendKeys "1{+}"
WScript.Sleep 500
WshShell.Sendkeys "2"
WScript.Sleep 500
WshShell.Sendkeys "~"
WScript.Sleep 500
WshShell.Sendkeys "*3"
WScript.Sleep 500
WshShell.Sendkeys "~"
'将用户通过键盘输入的ENTER送至计算器窗口
WScript.Sleep 2000
WshShell.Sendkeys "%{f4}"COPY
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

怎么没人顶呢?
好帖啊。

TOP

太~~~~~好~~~了~~~~

TOP

终于盼来了啊!!!!!!!!!

TOP

学到不少!

精彩,学到不少,我搜索了一下这个系统,就没有找到WSH基础(2),不知道有没有,有的话希望各位能告诉我一个相关的网址,谢谢!

TOP

TOP

谢谢分享…

TOP

返回列表