Board logo

标题: [原创] WINDOWS中的脚本教程(No.01) [打印本页]

作者: Spring    时间: 2010-5-9 22:42     标题: WINDOWS中的脚本教程(No.01)

WINDOWS中的脚本教程(No.01)


就像学英语一需要一本牛津词典一样,我们需要一个基本的工具书,可以在此帖下载:
http://bathome.net/thread-1985-1-2.html
为了方便在之后的文章中直接引用链接,请把这个CHM电子书保存为 D:\vbjs.chm
比如在 IE 地址栏中输入 mk:@MSITStore:D:\vbjs.chm::/html/vbswhat.htm 就能转到关于VBScript的说明页面。

再次声明,这个所谓“教程”可能不会详细介绍VBS的各种细节,系统化的教程已经有很多了没必要做重复工作。

作为一种语言的开始,一般都会介绍运算符,我今天就说这个,顺带说说变量的定义。

算术运算的加减乘除都一样,+ - * / ,不同的是VBS中有求余数的运算符 Mod ,幂运算(x的y次方)符号 ^ ,把一些文字连接起来的运算符 & 。

你可能发现了,在批处理中 ^ 是转义符,表示紧接它之后的那个字符按照他的文字意思理解, & 是连接两条语句,这里就来对比说明一下语法方面的特殊符号。

注释:BAT 的有 REM 和两个连续的冒号 :: (并不限于两个冒号,可以查看相关帖讨论),相对应 VBS 的有 REM 和单引号 ' ,REM 只能用于一行的最开始,而 ' 可以用在任意位置,一行的 ' 号之后的所有内容被忽略;

几行写在一行:BAT 用一个 & 表示前后是两条语句,但是写在一行上, VBS 中用一个冒号 : (VBS中 & 用于连接两个字符串);

一行写成几行:BAT 无此功能(可能只能用特殊方式实现了),VBS 中用一个下划线 _ ,表示下面一行与这行其实是一行;

转义符:BAT 的是 ^ ,VBS 无此概念,用引号抱起来的都是文字意思,这样导致的结果是有一个特例当字符串中有引号"可能导致系统不知道这个是字符串的边界还是他就是一个引号文字,因此需要用两个引号来表示 "";

示例代码 BAT
  1. @echo off
  2. REM 语法符号示例
  3. ::把两行写在一行
  4. @echo 第一行 & echo 第二行
  5. :: 转义符
  6. echo (P)^&(C)2010 "Spring"
  7. ::一行写成两行
  8. echo ^
  9. 这是一条ECHO语句的显示
  10. pause>nul
复制代码
示例代码 VBS
  1. REM 语法符号示例
  2. '把两行写在一行
  3. wscript.echo "第一行" : wscript.echo "第二行" '注释 : VBS中文字都必须要用引号抱起来,这个稍候会说明。
  4. ' 转义符
  5. wscript.echo "(P)&(C)2010 ""Spring"""
  6. '一行写成两行
  7. wscript.echo _
  8. "这是一条ECHO语句的显示"
复制代码
要进行运算,一般都会用变量把结果装起来才好操作。
这里又要说一下变量的类型和不同的表示方式了。

在BAT里面我用过的就两种,一种是数字的,一种是字符串的,不同的是字符串的用 set var=字符串,而数字用 set /a var=123456 。
变量使用的时候用百分号%抱起来,例如 %var% 。

而VBS里面有很多种类,现在也先就看两种吧,字符串和数字,赋值的时候字符串用 var="字符串" ,数字用 var=123456 ,
使用变量的时候直接就是 var 。

这里要指出一下语法的不同之处,在BAT里字符一般都不用引号,变量用%抱起来,但是包含空格等特殊符号的时候又用引号,比较混乱;
VBS或者其他高级语言中都是字符串用引号抱起来,而没有抱起来的就是变量了,这样显然比较容易写代码和阅读。

变量的使用示例 BAT
  1. @echo off
  2. set str1=Spring
  3. set str2=Brother
  4. set str=%str1%%str2%
  5. set /a num1=3
  6. set /a num2=6
  7. set /a num=num1+num2
  8. echo 字符串第一个是%str1%,第二个是%str2%,它们连起来是%str%
  9. echo 数字第一个是%num1%,第二个是%num2%,它们的和是%num%
  10. pause>nul
复制代码
变量的使用示例 VBS
  1. str1="Spring"
  2. str2="Brother"
  3. str=str1&str2
  4. num1=3
  5. num2=6
  6. num=num1+num2
  7. wscript.echo "字符串第一个是" & str1 & ",第二个是" & str2 & ",它们连起来是" & str
  8. wscript.echo "数字第一个是" & num1 & ",第二个是" & num2 & ",它们的和是" & num
复制代码
VBS中还有许多变量类型和运算符,今天暂时讲这么多,我打算在下一节详细介绍一些,这些是最基础的东西,以后哪里都离不开。

最后再介绍两个及其有用的函数,execute 和 eval ,简单的说他们就是执行一个字符串代表的语句,灵活运用的话能达到很多效果。
来看个例子理解它是干什么用的。

BAT只能模拟execute的效果。
  1. @echo off
  2. set "strProc=echo 这个字符串被当成一条语句执行了。"
  3. cmd /c %strProc%
  4. pause>nul
复制代码
VBS
  1. strProc="wscript.echo ""这个字符串被当成一条语句执行了。"""
  2. execute strProc
  3. strFunc="3+6"
  4. result=eval(strFunc)
  5. wscript.echo "变量的result的值是" & result
复制代码
资料连接:

数据类型
mk:@MSITStore:D:\vbjs.chm::/html/vbsdatatype.htm

运算符
mk:@MSITStore:D:\vbjs.chm::/html/vsgrpoperatorsummary.htm

mk:@MSITStore:D:\vbjs.chm::/html/vsstmexecute.htm
mk:@MSITStore:D:\vbjs.chm::/html/vsfcteval.htm



=== No.01 End ===
作者: w6680664    时间: 2010-11-30 20:01

谢谢分享  帮你顶哈
作者: strong12345    时间: 2010-12-25 11:05

感谢楼主
因为小弟只熟悉批处理..
而这篇明确指出vbs与bat异同之处
对我很有帮助
非常感谢!!!
作者: garyng    时间: 2011-11-6 18:57

苦苦地学着VBS中。。。
作者: echoairair    时间: 2012-2-26 09:06

讲的很好很细致啊
作者: 蓝色森林    时间: 2012-5-24 10:15

又学会了一个输出语句(之前只会用msgbox)
作者: 喃喃努努    时间: 2012-5-24 15:16

还是不懂怎么用vbs,像批处理保存为.bat文件就能用,VBS怎么用?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2