[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

前面的基础知识学完了,实践喽!转载请注明 bbs.bathome.net
  1. 一:你好!WSH
  2. 程序知识点
  3. *MsgBox函数
  4. 语法:MsgBox(prompt[,buttons][.title][,helpfile,context])
  5. 程序源代码:
  6. WelcomeMessage="你好!WSH!"
  7. WelcomeText="Windows Scripting Host 实例"
  8. MsgBox WelcomeMessage,vbInformation,WeclomeText
  9. 二:显示文本信息
  10. 概述:介绍File文件对象技术的另一些应用,其中涉及到Type属性(文件类型),Size属性(文件大小)和DateLastAccessed属性(文件最后被访问时间)
  11. 程序源代码:
  12. '定义一个dispfile函数
  13. function dispfile(fn)
  14. Dim fi
  15. Dim att
  16. On Error resume next
  17. '获取file对象
  18. Set fi=fs.GetFile(fn)
  19. '清空att字符串
  20. att=""
  21. //126
  22. '将文件名称,文件类型,大小,最后访问时间的信息加入att
  23. att=att+fn+":"+vbcrlf
  24. att=att+"文件类型:"+fi.Type+vbcrlf
  25. att=att+"文件最后访问时间:"+cStr(fi.DateLastAccessed)+vbcrlf
  26. dispfile=att
  27. End function
  28. Set fs=CreateObject("Scripting.FileSystemObject")
  29. Dim fileinfor
  30. fileinfor=""
  31. '调用dispfile函数获取c:\io.sys的文件信息
  32. fileinfor=fileinfor+dispfile("c:\io.sys")+vbcrlf
  33. Set fo=fs.GetSpecialFolder(WindowFolder)
  34. fileinfor=fileinfor+dispfile(fo.Path+"\win.ini")+vbcrlf
  35. fileinfor=fileinfor+dispfile(fo.Path+"\system.ini")+vbcrlf
  36. MsgBox fileinfor,vbinformation,"WSH显示文本信息"
  37. 三.显示驱动器信息。
  38. 概述:已经知道利用对象技术,WSH程序可以获取系统信息,网络信息,网络信息,而驱动器对象可以提供详细的驱动器信息
  39. 本节介绍的知识点:
  40. GetDrive方法
  41. DriveType属性
  42. IsReady属性
  43. FreeSpace属性
  44. TotalSize属性
  45. FileSystem属性
  46. SerialNumber属性
  47. ShareName属性
  48. DriveLetter属性
  49. VolumeName属性
  50. Drives集合
  51. For Each  Next语句
  52. 程序知识点:
  53. *GetDrive方法
  54. 返回一个与指定路径中的驱动器相对应的Drive对象。
  55. 语法:object.GetDrive drivespec
  56. 参数:object始终是一个FileSystemObject的名字
  57. Drivespec:可以是C:  C    C:\或任何网络的说明(\\computer2\share1)
  58. ps:对于共享,要进行检查以确保共享的存在。
  59. *DriveType属性
  60. 返回一个值,表示指定驱动器的类型。
  61. 语法:object.DriveType
  62. 例子:
  63. Sub ShowDriveType(drvpath)
  64. Dim fs,d,s,t
  65. Set fs=CreateObject("Scripting.FileSystemObject")
  66. Set d=fs.GetDrive(drvpath)
  67. Select Case d.DriveType
  68.   Case 0:t="Unknown"
  69.   Case 1:t="Removable"
  70.   Case 2:t="Fixed"
  71.   Case 3:t="Network"
  72.   Case 4:t="CD-ROM"
  73.   Case 5:t="RAM Disk"
  74. End Select
  75. s="Drive"&d.DriveLetter&":-"&t
  76. MsgBox s
  77. End Sub
  78. *IsReady属性。
  79. 如果指定的驱动器已准备好,返回True;否则返回False
  80. 语法:object.IsReady
  81. *FreeSpace属性
  82. 返回指定的驱动器或网络共享的用户可用磁盘剩余空间容量。只读。
  83. 语法:object.FreeSpace
  84. *TotalSize
  85. 以字节为单位,返回驱动器或网络共享的总空间大小。
  86. *FileSystem属性。
  87. 返回指定驱动器所使用的文件类型。
  88. object.FileSystem
  89. 返回类型包括FAT,NTFS,以及CDFS
  90. *SeriousNumber属性。
  91. 返回用于唯一标识磁盘卷标的十进制序列号。
  92. object.SerialNumber
  93. *ShareName属性。
  94. 返回指定驱动器的网络共享名。
  95. *DriveLetter
  96. 返回麽个物理本地驱动器或共享的驱动器字母。
  97. *VolumeName属性。
  98. 设置或返回指定驱动器的卷标名。读/写属性。
  99. 语句:object.VolumeName[=newname]
  100. *Drives集合。
  101. 所有可用驱动器的只读集合。
  102. *For Each  Next
  103. 程序源代码分析。
  104. '写文本文件的子程序
  105. Sub writefile(detail)
  106. Set fs=CreateObject("Scripting.FileSystemObject")
  107. set file=fs.CreateTextFile("驱动器信息.txt",True)
  108. file.Write detail
  109. file.Close
  110.   Set fs=nothing
  111. End Sub
  112. Sub dispdrvstat(drvname)
  113. Dim dn
  114. dn=Left(drvname,1)
  115. Set drv=fso.GetDrive(dn)
  116. With drv
  117. Select Case DriveType
  118. Case 1
  119. dn="软盘"
  120. Case 2
  121. dn="硬盘"
  122. Case 4
  123. dn="光盘"
  124. End Select
  125. '将驱动器的各项信息加入drvinfo字符串
  126. drvinfo=drvinfo+"驱动器类型:"+dn+vbcrlf
  127. If.IsReady Then
  128. drvinfo=drvinfo+"驱动器情况:以准备"+dn+vbcrlf
  129. drvinfo=drvinfo+"驱动器未用容量:"+cStr(.FreeSpace/1024/1024)+"MB"+vbcrlf
  130. drvinfo=drvinfo+"驱动器全部容量:"+cStr(.TotalSize/1024/1024)+"MB"+vbcrlf
  131. drvinfo=drvinfo+"驱动器文件系统:".FileSystem+vbcrlf
  132. drvinfo=drvinfo+"驱动器序列号:"+cStr(.SerialNumber)+vbcrlf
  133. drvinfo=drvinfo+"驱动器共享名:"+.ShareName+vbcrlf
  134. Else
  135. drvinfo=drvinfo+"驱动器情况:未准备"+vbcrlf
  136. drvinfo=drvinfo+"驱动器共享名:"+.ShareName+vbcrlf
  137. End If
  138. End With
  139. End Sub
  140. '取所有驱动器对象的信息
  141. Set fso=CreateObject("SCripting.FileSystemObject")
  142. Dim drv
  143. Dim drvs
  144. Dim drvinfo
  145. Set drvs=fso.Drives
  146. For Each drv in drvs
  147.   If drv.IsReady Then
  148.    drvinfo=drvinfo+drv.DriveLetter+":\["+drv.VolumeName+"]"+vbcrlf
  149.   Else
  150.    drvinfo=drvinfo+drv.DriveLetter+":\"+vbcrlf
  151.   End If
  152.   Call dispdrvstat(drv.DriveLetter)
  153. Next
  154. Set fso=nothing
  155. MsgBox drvinfo
  156. Call writefile(drvinfo)
  157. 五:获取文件夹的信息。
  158. 1.概述:细说利用Folders集合获取文件夹信息的方法,以及Floders集合中的可用对象。同时在实例中也运用到Function过程的用法
  159. 2.知识点:
  160. Floders集合
  161. GetSpecialFolder方法
  162. Function语句
  163. Files集合
  164. SubFolders属性
  165. DateLastModified属性
  166. Size属性
  167. 程序知识点
  168. *Folders集合
  169. 包含在一个Folder对象内的所有Folder对象的集合。
  170. 例子:说明如何获得一个Folder集合,以及如何用 FOR EACH   NEXT语句来访问该集合中的每个Folder。
  171. Sub ShowFolderList(folderspec)
  172. Dim fs,f,fl,fc,s
  173. Set fs=CreateObject("Scripting.FileSystemObject")
  174. Set f=fs.GetFolder(folderspec)
  175. Set fc=f.SubFolders
  176. For Each fl in fc
  177.   s=s&fl.name
  178.   s=s&vbcrlf
  179. Next
  180. MsgBox s
  181. End Sub
  182. *GetSpecialFolder方法
  183. 返回指定的特殊文件夹。
  184. 语法:object.GetSpecialFolder(folderspec)
  185. *Function语句。
  186. 声明Function过程的名称,参数以及构成其主体的代码。
  187. *Files集合。
  188. 在一个文件夹内的所有File对象的集合。
  189. 例子:说明了如何获得一个Files集合。以及如何用For Each...Next语句来访问这个集合中的每个File:
  190. Sub ShowFolderList(folderspec)
  191. Dim fs,f,fl,fc,s
  192. Set fs=CreateObject("Scripting.FileSystemObject")
  193. Set f=fs.CreateFolder(folderspec)
  194. For Each fl in fc
  195.   s=s&fl.name
  196.   s=s&vbcrlf
  197. Next
  198. MsgBox s
  199. End Sub
  200. *SubFolders属性。
  201. 返回包含所有文件夹的一个Folders集合,这些文件夹包含在某个特定的文件夹汇总。包括设置了隐藏和系统文件属性的那些文件夹。
  202. 语句:object.SubFolders  
  203. object总是一个Folder对象。
  204. *DateLastModified
  205. 返回最后一次修改指定文件或文件夹的日期和时间。只读。
  206. 语句:object.DateLastModified  
  207. object总是一个Folder对象。
  208. *Size属性
  209. 程序源代码
  210. '定义一个folderattt(fo)过程
  211. function folderatt(fo)
  212. Dim att
  213. On Error Resume Next
  214. '将指定文件夹对象的文件数,子目录数和占用字节依次加入folderatt字符串
  215. folderatt=folderatt+fo.name+"目录:"+vbcrlf
  216. folderatt=folderatt+"该目录下的文件数:"+cStr(fo.Files.Count)+vbcrlf
  217. folderatt=folderatt+"该目录下的子目录数:"+cStr(fo.SubFolders.Count)+vbcrlf
  218. folderatt=folderatt+"该目录占用字节:"+cStr(fo.Size/1024/1024)+"MB"+vbcrlf
  219. folderatt=folderatt+"该目录最后修改时间:"+cStr(fo.DateLastModified)+vbcrlf
  220. End function
  221. Dim dispatt
  222. dispatt=""
  223. Set fs=CreateObject("Scripting.FileSystemObject")
  224. Set folder=fs.GetSpecialFolder(0)
  225. dispatt=dispatt+folderatt(folder)
  226. Set folder=fs.GetSpecialFolder(1)
  227. dispatt=dispatt+folderatt(folder)
  228. Set folder=fs.GetSpecialFolder(2)
  229. dispatt=dispatt+folderatt(folder)
  230. Set fs=nothing
  231. MsgBox dispatt
  232. 六 获取系统和网络信息
  233. 源代码
  234. Set WshNetwork=WScript.CreateObject("WScript.Network")
  235. '设置EnumNetworkDrives参数集。
  236. Set oDrives=WshNetwork.EnumNetworkDrives
  237. '设置EnumPrinterConnection参数集
  238. Set oPrinters=WshNetwork.EnumPrinterConnections
  239. '获取域名
  240. netinfo="域名:"+WshNetwork.UserDomain+chr(13)
  241. '获取计算机名
  242. netinfo="计算机名:"+WshNetwork.ComputerName+chr(13)
  243. '获取用户名
  244. netinfo="用户名:"+WshNetwork.UserName+chr(13)
  245. WScript.Echo(netinfo)
  246. netmap=""
  247. For i=0 to oDrives.Count()-1 Step 2
  248. netmap=netmap+"驱动器"+oDrives.Item(i)+"="+oDrives.Item(i+1)+chr(13)
  249. Next
  250. if netmap<>""Then
  251. WScript.Echo("网络映射驱动器:"+chr(13)+netmap)
  252. End If
  253. netprn=""
  254. For i=0 to oPrinters.Count-1 step 2
  255. netprn=netprn+"端口: "+oPrinters.Item(i)+"="+oPrinters.Item(i+1)+chr(13)
  256. Next
  257. if netprn<>"" Then
  258. WScript.Echo("网络打印机:"+chr(13)+netprn)
  259. End IF
  260. 七:参数拖放操作。
  261. 知识点:Set语句
  262. '设置objArgs为Arguments对象
  263. Set objArgs=WScript.Arguments
  264. For i=0 to objArgs.Count-1
  265. WScript.Echo objArgs(i)
  266. Next
  267. 八访问文本文件
  268. 知识点:
  269. CreateTextFile方法
  270. OpenTextFile方法
  271. ReadLine方法
  272. WriteLine方法
  273. 程序源代码:
  274. Dim fs
  275. Dim file
  276. Sub writefile
  277. Set fs=CreateObject("Scripting.FileSystemObject")
  278. Set file=fs.CreateTextFile("wshwrite.txt",True)
  279. file.WriteLine("Windows Scripting Host实例")
  280. file.WriteLine("写文件实例")
  281. file.Close
  282. Set fs=nothing
  283. End Sub
  284. Sub readFile
  285. ForReading=1
  286. TristateFalse=0
  287. Set fs=CreateObject("Scripting.FileSystemObject")
  288. Set file=fs.OpenTextFile("wshwrite.txt",ForReading,TristateFalse)
  289. MsgBox file.ReadLine
  290. file.Close
  291. Set fs=nothing
  292. End Sub
  293. writefile
  294. readfile
  295. 九:显示环境变量
  296. 程序源代码:
  297. Sub show_env(strText)
  298. MsgBox strText,vbInformation,"WSH显示环境变量"
  299. End Sub
  300. Dim WSHShell
  301. Set WSHShell=WScript.CreateObject("WScript.Shell")
  302. intIndex=0
  303. strText=""
  304. For Each strEnv In WshShell.Environment("PROCESS")
  305. intIndex=intIndex+1
  306. strText=strText&vbcrlf&Right(" "&intIndex,4)&strEnv
  307. Next
  308. Call show_env(strText)
  309. 十:建立快捷方式
  310. 知识点:ActiveXObject对象。
  311. *ActiveXObject对象
  312. 启用并为一个自动操作的对象返回参照。
  313. 语法:
  314. var newObject=new ActiveXObject(class)
  315. 参数class的名称组成为servername.typename.
  316. servername:提供对象的程序名称。
  317. Typename:所要创建的对象的类型或类别。
  318. 程序源代码分析:
  319. Set WshShell=WScript.CreateObject("WScript.Shell")
  320. strDesktop=WshShell.SpecialFolders("Desktop")
  321. Set oShellLink=WshShell.CreateShortCut(strDesktop&"\画笔.lnk")
  322. oShellLink.TargetPath="mspaint.exe"
  323. oShellLink.WindowStyle=1
  324. oShellLink.Hotkey="CTRL+SHIFT+P"
  325. oShellLink.IconLocation="mspaint.exe,0"
  326. oShellLink.Description="由WSH建立的画笔快捷方式"
  327. oShellLink.WorkingDirectory=strDesktop
  328. oShellLink.Save
  329. Set oUrLink=WshShell.CreateShortcut(strDesktop&"\武汉理工大学.url")
  330. oUrLink.TargetPath="http://www.whut.edu.cn/"
  331. oUrLink.Save
  332. 十一.模拟键盘输入.
  333. Set WshShell=WScript.CreateObject("WScript.Shell")
  334. WshShell.Run "calc"
  335. WScript.Sleep 100
  336. WshShell.AppActivate "Calculator"
  337. WScript.Sleep 100
  338. WshShell.SendKeys "1{+}"
  339. WScript.Sleep 500
  340. WshShell.Sendkeys "2"
  341. WScript.Sleep 500
  342. WshShell.Sendkeys "~"
  343. WScript.Sleep 500
  344. WshShell.Sendkeys "*3"
  345. WScript.Sleep 500
  346. WshShell.Sendkeys "~"
  347. '将用户通过键盘输入的ENTER送至计算器窗口
  348. WScript.Sleep 2000
  349. WshShell.Sendkeys "%{f4}"
复制代码
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

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

怎么没人顶呢?
好帖啊。

TOP

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

TOP

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

TOP

学到不少!

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

TOP

TOP

谢谢分享…

TOP

返回列表