Windows下的“批处理”

   如果你使用过UNIX上的Shell Script(命令解释器脚本) 那么对Unix下的脚本编程一定深有感触 利用UNIX上的各种Shell Script 例如C Shell TCL/TK Perl UNIX管理员往往用一个脚本就可以完成你半天的编程才能完成的任务

   但在微软的世界中一直没有够份量的类似东西出现 充其量我们只能写写简单的Batch File(就是DOS下的批处理命令) 但它所提供的功能也太过于简单 无法处理复杂的事情 不过以前在DOS下还有Basic可以解一点燃眉之急 谁知道到了Windows 以后连Basic都不复存在 让我们这些喜欢DIY的朋友们很不舒服 其实在Windows方便的操作界面下掩盖着更为强大的功能 你听说过WSH吗?它的全称是Windows Scripting Host 中文名字可以叫它Windows平台指令主机 就是它 让你通过威力强大的VBScript和JavaScript脚本 来实现强大的功能 再也不用羡慕UNIX平台下的各种Shell Script了……

   WSH的优点

   WSH可以在 位Windows平台上提供简单 威力强大以及具有弹性的指令环境

   更有威力的指令系统

   在以前 Windows操作系统支持的唯一类似于脚本语言的是MS DOS的批处理命令 虽然MS DOS指令又快又小 但和VBScript及JavaScript相比 MS DOS受到许多限制 今天 架构于ActiveX之上的WSH允许使用者利用威力强大的指令语言如VBScript与JavaScript 同时MS DOS指令WSH仍可以支持 不过对于脚本语言来说 它只是很小的一个方面了

   Windows脚本语言的执行环境

   以前的MS DOS类的命令只可以在DOS下或者DOS窗口下使用 现在不一样了 Microsoft目前在 Windows平台上提供三种脚本语言的执行环境:

   WSH架构

   长久以来 Windows操作系统都缺乏一个真正的Shell程序功能 因此微软就针对了这个问题提出了WSH的架构 把解释程序语言的部分以及提供功能服务 像是显示信息 存取文件 或是读写注册表 (Registry) 等部分功能分开 解释的部分交给相应语言的解释引擎(Scripting Engine) 而提供功能服务的部分就称为一个执行环境 (Scripting Host) WSH就是专为在Windows系统下执行这种服务程序的环境

   刚才所讨论的解释与服务分开的方式就是微软的ActiveX Scripting架构 图 就说明了WSH的架构以及执行环境与解释引擎之间的关系 在这个图中 我们假设要执行Tentimes vbs脚本 它的具体步骤是:

   先执行WSH(Windows 带有字符模式的cscript exe和图形界面的Wscript exe) 告诉它执行tentimes vbs脚本 具体的命令行是:

   cscript tentimes vbs或者wscript tentimes vbs

   这是WSH会根据所要执行脚本的后缀名(VBS) 到系统注册表中查询可以解释这种程序的解释引擎(Windows 附有VBScript和JavaScript两种语言的解释引擎 你也可以自己安装其它语言的解释引擎 比如Perl)

   找出解释引擎之后 WSH会将程序一行一行从脚本中读出 然后送到解释引擎 由解释引擎解释程序所要执行的动作

   如果所要执行的动作必须要使用到WSH所提供的服务 例如存取文件或是注册表的内容 就向WSH提出要求 由WSH负责处理

   通过这样的方式 不管你使用何种语言 只要有该语言的解释引擎 就可以在WSH下执行该种语言编写的程序 并且可以使用WSH所提供的服务

   也许有的朋友要问:WSH是如何将这些服务提供给脚本语言呢?其实很简单 它其实相当于我们练习编程的那些函数(当然了 微软称它们为对象 属性和方法) 通过这些接口实现脚本和操作系统的对话 好了 闲话少说 我们先来看看WSH到底有何神通……

   Windows /Me Windowns NT+IIS和Windows 都已经附带有WSH(不用去找那些烦人的编程语言IDE^_^) 如果你用的是Windows 或者你想将你的WSH更新到最新版本 没有问题 到微软的WSH站点下载一个就是 当前的最新版本是 不过你下载的时候可要看清楚语言版本 中文的一定要选择Chinese/Simplified 下载不一致的语言版本回来可是不能安装的 同时你还要选择适合自己操作系统的版本 Windows 和其它操作系统是不同的 另外如果你想好好看一下WSH的帮助文档(WSH的帮助文档可不是像Linux下都随软件带有 它是需要另外下载的) 也可以到前边所说的网址下载一个可执行文件 安装以后在\Program Files\Microsoft Windows Script\WSHdocs下找到一个WSH chm的帮助文件 里面有WSH的详细说明 这个东西你可千万不能少了……

   WSH使用初探

   整个WSH中 Script语言都是以对象(Object)为基础在运作 讲到对象自然就会有所谓的方法(Method)和属性(Property) 所以要使用WSH的第一步就是建立一个对象 然后利用该对象的各种方法和属性 WSH提供以下几个对象:

   Script Network:用来与网络沟通 通过它 你可以取得网络的各种信息 比如IP地址 网上邻居列表等等

   WScript Shell:与操作系统沟通 你可以通过该对象在桌面建立快捷方式 建立/删除注册表键值

   Excel Application:与Excel沟通 不但可以在Excel中显示WSH内容 而且可以用WSH存取Excel和显示图表

   此外 WSH还可以显示一些窗口和捕捉鼠标的输入等等 这里就不再枚举 下边我们看看它具体是如何使用的:

   建立一个弹出窗口

   记得以前在所有的编程科目学习中 老师都会让我们编写一个Hello World!的实例 这里我们先看看如何完成一个Hello World的弹出窗口 打开记事本 输入以下代码 保存为PopUp js 然后执行一下看看效果是否和图 一样

  

   function showit(){

   var Message = Hello World! ;

   var timeout = ;

   var title = Hello World! ;

   var buttons = ;

   var rslt;

  

   var WS = WScript CreateObject( WScript Shell );

   rslt = WS Popup(Message timeout title buttons);

   if ( rslt == ) {

   WScript Quit;

   }

   }

   showit();

   显示网络信息(见图 )

   让我们看看如何显示使用者工作组 使用者姓名 和电脑名称 使用记事本建立network vbs 内容如下:

   Set WSHNetwork = WScript CreateObject( WScript Network )

   显示WSHNetwork object的properties

   MsgBox 使用者工作组: & WSHNetwork UserDomain & Chr( ) & Chr( ) & 使用者姓名: & WSHNetwork UserName & Chr( ) & Chr( ) & 电脑名称 : & WSHNetwork ComputerName vbInformation + vbOKOnly WSHNetwork 内容

   桌面快捷方式的建立

   Shortcut vbs

   Set WSHShell = WScript CreateObject( WScript Shell )

   使用SpecialFolders读取桌面路径

   DesktopPath = WSHShell SpecialFolders( Desktop )

   于桌面上建立快捷方式

   Set Shortcut = WSHShell CreateShortcut(DesktopPath & \记事本 lnk )

   设定快捷方式的属性并保存

   Shortcut TargetPath = WSHShell ExpandEnvironmentStrings( %windir%\notepad exe )

   Shortcut WorkingDirectory = WSHShell ExpandEnvironmentStrings( %windir% )

   Shortcut WindowStyle =

   Shortcut IconLocation = WSHShell ExpandEnvironmentStrings( %windir%\notepad exe )

   Shortcut Save

   WSH与Excel沟通(见图 )

   让我们看看如何在Excel中显示WSH内容 使用记事本开启excel vbs 内容如下:

   Set objXL = WScript CreateObject( Excel Application )

   objXL Visible = TRUE

   objXL WorkBooks Add

   objXL Columns( ) ColumnWidth =

   objXL Columns( ) ColumnWidth =

   objXL Columns( ) ColumnWidth =

   objXL Cells( ) Value = 属性名称

   objXL Cells( ) Value = 值

   objXL Cells( ) Value = 描述

   objXL Range( A :C ) Select

   objXL Selection Font Bold = True

   objXL Selection Interior ColorIndex =

   objXL Selection Interior Pattern = xlSolid

   objXL Selection Font ColorIndex =

   objXL Columns( B:B ) Select

   objXL Selection HorizontalAlignment = &hFFFFEFDD xlLeft

  

   Dim intIndex

   intIndex =

   显示WScript properties

   Call Show( Name WScript Name 应用程序名称 )

   Call Show( Version WScript Version 应用程序版本 )

   Call Show( FullName WScript FullName 应用程序内容: 完整名称 )

   Call Show( Path WScript Path 应用程序内容: 只有路径 )

   Call Show( Interactive WScript Interactive 互动模式状态 )

   显示命令行参数

  

   Dim colArgs

   Set colArgs = WScript Arguments

   Call Show( Arguments Count colArgs Count 指令列引数数目 )

   For i = to colArgs Count

   objXL Cells(intIndex ) Value = Arguments( & i & )

   objXL Cells(intIndex ) Value = colArgs(i)

   intIndex = intIndex +

   objXL Cells(intIndex ) Select

   Next

  

   Sub Show(strName st

Windows下的“批处理”

相关文章:

你感兴趣的文章:

标签云: