WINDOWS中的脚本教程(No.00)
之所以叫这个名字,是因为WINDOWS系统里面有很多程序代码,用记事本编辑后保存就能运行,CMD命令行、VBScript代码、JScript&JavaScript代码等,而借助WMIC或者脚本对象又可以执行强大的WMI命令,脚本可以封装在HTA文件中变得具有“UI界面”易于别人使用,如果会使用它们,那么操作计算机是如鱼得水!
我发现论坛里面很多人只热衷于CMD命令行或BAT批处理代码,但是不会用其他的,可能是其他脚本不好起步,我最初始就出的是DOS系统,因此会的就是那些命令,VBS是自己白手起家慢慢学的理解其中的难处,我写这个教程的目的就是用一种比较简单的方式,让想学脚本的人上手。
此文默认读者有一定的CMD批处理功底,过程中可能有很多地方与批处理对照或者相互引用。
这里先明确一下内容,我决定主要说VBScript(简称VBS),因为JScript或JavaScript(简称JS)代码有标点符号且严格区分大小写不利于初学,过程中可能会顺带弄一些WMI或者HTA的应用进去。
本文不会系统的去讲解VBS,论坛或其他地方有很多系统的教程,或者我称之为“工具书”,在你想干某事而又不知道怎么干的时候就去搜索,去查它们,根据我的经验,这是进步最快的方式!
好了,现在正式开始说了,VBS是个什么东西呢?与BAT批处理有什么地方不一样呢?要回答这些问题很无聊,我只说说自己的理解。
我将“命令行”理解为“一行命令”,“批处理”就是一批命令行依次运行,但是他们是怎么工作的呢?
啊哈,我们用 cd C: 可以把目录切换到C盘根目录,用 ping google.com 可以测试到google.com的连接,细心的人会注意到,在 C:\Windows\system32 目录里面有个 ping.exe,如果你给他创建一个快捷方式,然后在快捷方式的属性里面在“目标”里程序路径后面添加上一个空格和google.com,双击这个快捷方式一样能得到效果,但是没有叫做 cd.exe 或 cd.com 的文件。
于是我知道有些东西是这个运行的“平台”CMD.EXE自己就会干的,而有些事情他自己不会干,就请别人(此例中为PING.EXE)帮着干,最终干成了一件事情,但是我们几乎从来都不会写“ping.exe google.com”这么麻烦的代码,甚至很多人根本就不知道有 ping.exe 这个东西,我们已经将 ping 看做 CMD 的一个命令了。
(这个帖子里面有列出那些自带的命令 http://bathome.net/thread-7775-1-1.html )
我们可以看做BAT批处理就是“结合CMD.EXE自己的本事和系统中的其他资源来干某些事情”,因此通常也将这些“其他资源”视为批处理的一部分了。
轮到说VBS了,VBS脚本就是“结合一个叫WINDOWS脚本宿主自己的东西的本事和系统中的其他资源来干某些事情”,而这里的“其他资源”不仅包括BAT批处理所能使用的所有资源(当然包括BAT批处理文件本身),还包含一些成为控件的看不见的东西。它也跟BAT一样,是一行一行执行的。
这个“控件”是什么东西呢,都是在系统里准备好了的,当VBS要用这些资源的时候就把他们变成传说中的“对象”,就像ping google.com一样,使用这个控件的功能了!
怎么变成“对象”呢?当然是“WINDOWS脚本宿主同志(Windows Script Host---WSH)”自带的本事了,WSH有什么本事呢?我们以后慢慢说。。。
这里提到了“对象”,你可能会疑惑难道VBS就是面向对象的编程?我个人理解啊,这个叫“使用对象”或“基于对象”的编程更合适,因为面向可能要自己去务实对象,我们只需要把对象拿来用就好了,多么惬意!
再说运行环境,VBS真是条件优越啊,WINDOWS只给了CMD命令行一个黑乎乎的CMD.EXE来运行它,但是VBS不仅有一个黑乎乎的CSCRIPT.EXE可以运行,还有一个没有界面的WSCRIPT.EXE可以运行,是不是感觉更河蟹?不仅如此,如果把VBS写到HTA文件里面,又多了个MSHTA.EXE能运行它,啊,如果放到HTM文件里面,你现在在看的网页,浏览器也能运行它,真是太棒了。
今天就说到这里了,最后得说说各种代码如何运行啊是吧,就用各种 hello world 结束序言吧,也开始各种语言“对照翻译”的征程。
BAT批处理,保存为 .bat 文件。
hello.bat- echo 您的电脑已感染病毒,请长按主机电源开关以清除它!
复制代码 双击就可以运行,但是窗口一闪而逝;
运行CMD.EXE之后,输入 hello.bat 可以再CMD界面(传说中的“控制台”)看到信息。
VBS脚本,保存为 .vbs 文件。
hello.vbs- WScript.Echo "您的电脑已感染病毒,请长按主机电源开关以清除它!"
复制代码 这里出现了第一个现成的对象 WScript,它只在用 WSCRIPT.EXE 或者 CSCRIPT 运行脚本时存在。
WScript.Echo 表示显示文字信息, WSCRIPT.EXE 在对话框中,CSCRIPT 在控制台。
双击就可以默认用WSCRIPT.EXE运行它,会弹出一个窗口,点确定后消失;
运行CMD.EXE之后,输入 CSCRIPT hello.vbs 可以看到在CMD界面看到输出一行文字后CSCRIPT.EXE执行完毕并退出。
JS脚本,保存为 .js 文件。- WScript.Echo("您的电脑已感染病毒,请长按主机电源开关以清除它!");
复制代码 运行方式和VBS一样。
HTA文件,保存为 .hta 文件。
- <script type="text/VBScript">alert "您的电脑已感染病毒,请长按主机电源开关以清除它!"
-
- document.write "您的电脑已感染病毒,请长按主机电源开关以清除它!"</script>
复制代码 或者- <script type="text/JavaScript">alert("您的电脑已感染病毒,请长按主机电源开关以清除它!");
-
- document.write("您的电脑已感染病毒,请长按主机电源开关以清除它!");</script>
复制代码 双击即可运行。
发现了么,hta文件就是用一对<script***></script>把脚本抱起来!
这里出现了第二个现成的对象 document,只在 HTM 环境中运行脚本时存在,document.write 表示在 htm 页面里面输出。
=== No.00 End ===
[ 本帖最后由 Spring 于 2010-4-28 09:13 编辑 ] |