脚本语言是一种动态语言(数据类型不在声明的时候确定,而是在使用的时候确定),是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。
脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。它的命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批量处理语言或工作控制语言。
一个脚本通常是解释运行而非编译。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工作。而宏语言(EXCEL)则可视为脚本语言的分支,两者也有实质上的相同之处。
Lua是一种动态类型语言。这意味着变量没有类型,只有值才有类型。语言中不存在类型定义。而所有的值本身携带他们自己的类型信息。行注释 --,多行注释 --[[ ]]。
Lua中有八种基本类型:nil、boolean、number、string、function、userdata、thread、and table。
nil用来描述一个无意义的值。
boolean类型只有两种值:false和true。nil和false都能导致条件为假,而另外所有的值都被当作真。
number表示实数。
string表示一串字符的数组;字符串可以包含任何8位字符,包括结束符('\0’);字符串可以用单引号与双引号来使用。
userdata类型用来将任意C数据保存在Lua变量中,这个类型相当于一块原生的内存,userdata不能在Lua中创建出来,也不可能在Lua中修改;这样的操作只能通过C来修改,这一点保证了宿主程序完全掌管其中的数据。
thread类型用来区别独立的执行线程,它被用来实现协同例程。
table类型实现了一个关联数组,数组可以用任何东西(除nil)做索引,而不限于数字,table可以以不同类型的值构成,table是lua中唯一的一种数据结构。
Windows中的批处理也是动态语言,跟C语言中的数据类型比较相近。行注释 rem或::,C语言中的多行注释/* */也适用于批处理。
Lua中有三种变量:全局变量、局部变量,还有table的域。任何变量都被假定为全局变量,除非显示的以local修饰定义;局部变量有其作用范围:局部变量可以被定义在它作用范围中的函数自由使用。在变量首次声明时,变量的值均为nil。
1) 数学运算操作符
Lua支持常见的数学运算操作符:二元操作 +、-、*、/、%、^(幂);一元操作 -。如果对数字转化成字符可以用string中的format。
2) 比较操作符
Lua中的比较操作符:==、~=(不等于)、<、>、<=、>=。这些操作的结果不是false就是true。
3) 逻辑操作符
Lua中的逻辑操作符:and、or、not。和控制结构一样,所有的逻辑操作符把false和nil作为假,其他的都是真的。
4) 连接符
Lua中字符串的连接操作符:..(就是两个点)
5) 取长度操作符
取长度操作符:#。我自己测试时没有成功过,也不知道是不是版本问题。
6) 函数定义
function block end。block是语句块
exp是表达式,block是语句块
1) if
if exp then block end;
if exp then block elseif exp then block else block end;
2) while
while exp do block end;
3) repeat
repeat block until exp;
4) for
for循环有两种形式:一种是数字形式,另一种是一般形式
l 数字形式
数字形式跟一般C语言中的for循环比较相近。语法如下:
for name ‘=' exp ‘,' exp ‘,' exp do block end;block将把name作循环变量。从第一个exp开始起,直到第二个exp的值为止,其步长(每次变化的值)为第三个exp。更确切的说,一个for循环看起来是如下模式: for v = e1, e2, e3 block end。
注意点:
如果第三个表达式(步长)没有给出时,会把步长设为1。
你可以用break来退出for循环
l l 一般形式
一般形式的for通过一个叫做迭代器(iterator)的函数工作。每次迭代,迭代器函数都会被调用以产生一个新的值,当这个值为nil时循环停止。语法如下:
for namelist in explist do block end namelist = {Var = “”, Var1 = “”}
for语句类似如下形式
for var_1,….,var_n in explistdo block end
等价于如下代码
do
local f,s,var = explist
while true do
local var_1,…,var_n = f(s, var)
var = var_i
if var == nil then break end
block
end
end
需注意以下几点:
explist 只会被计算一次。它返回三个值,一个迭代器函数,一个状态,一个迭代器的初始值。
f、s、以及var都是不可见的变量。这里给他们起的名字都只是为了解说方便。
你可以使用break来跳出for循环
循环变量var_i对于循环来说是一个局部变量;你不可以在for循环结束后继续使用。如果你需要保留这些值,那么就在循环结束前赋值到别的变量里去。
windows批处理的变量最常见的是环境变量,环境变量中的PATH变量在编译器的配置时会经常碰到,因为配置好PATH变量后,你在cmd(命令提示符)中输入的命令才会被执行。比如说在cmd中你输入的是xx.exe,而PATH中有xx.exe的路径,则该exe会被执行。
1) 比较操作符
比较操作符:==、EQU(等于)、NEQ(不等于)、LSS(小于)、LEQ(小于或等于)、GTR(大于)、GEQ(大于或等于);以字符来表示比较操作时需要有空格。
2) 逻辑操作符
逻辑操作符:not,逻辑非
1) if
if exp block;
如果是有括弧(不是{})是固定的,格式如下两种:
if exp (block)
if exp (
block)
如果是有else时,格式也是固定模式。如下三种:
if exp (block)else (block);
if exp (
block) else (
block);
if exp (
block) else (block);
2) for
forvar in (set)doblock;简单的实例:for %%i in (1 2 3 4 5) do echo %%i;变量i会从()中取出数据,循环5次并输出
循环也可以用goto命令来实现。goto命令下面会提到
在cmd(命令提示符)中输入命令加/?会显示命令的帮助文档。如dir /?,如果在命令前加@,则该命令不会显示在cmd上
说明:批处理中的注释
实例:rem cd /d d:/music
说明:更改目录或显示当前目录
实例:cd /d d:/music——/d跳转到指定目录下
cd \ ——退回到当前盘的根目录
cd .. ——退回到上一级目录
说明:复制文件
实例:copy d:/music/hello.mp3 d:——复制hello.mp3到D盘下
xcopy也是复制命令,但功能比copy多
说明:显示目录下的文件和子目录
实例:dir ——输出cmd的当前目录下的文件和子目录
说明:删除文件
实例:del d:/music/hello.mp3——删除指定路径下的mp3文件
说明:创建文件夹
实例:md file ——在cmd的当前目录下产生一个file名字的文件夹
说明:删除文件夹
实例:rd file ——在cmd的当前目录下删除file名字的文件夹
说明:网络中的通信协议,网络是否连通
实例:ping 127.0.0.1——本机回环地址,查明网卡是否可用
ping 127.0.0.1 –n 10> nul——发送10个ICMP的ECHO包,可以用作延时
说明:检测端口是否被占用
实例:telnet 127.0.0.1 8080——检测8080端口是否被占用
说明:显示信息
实例:echo message echo——在cmd中显示message echo信息
echo on 与 echo off——echo on是把它下面的命令(如ping 127.0.0.1)显示在cmd中,echo off不显示命令。如果在echo前加@,则不会显示echo on/off 命令
说明:调用另一个批处理,并且不终止父批处理
实例:call d:/music/music.bat——调用D盘music文件夹下的music.bat批处理文件,执行完后再返回父批处理,也可以调用其他类型的可执行文件
说明:可以启动指定的命令或程序
实例:start d:/music/music.bat——异步方式调用D盘music文件夹下的music.bat批处理文件,也可以是指定的可执行文件
说明:设置环境变量的值
实例:set var=variable——设置环境变量var的值为variable,设置好后查看的方式是用echo命令,如echo %var%即可得到环境变量var的值
说明:跳转作用
实例::label …….goto label——顺序执行语句,当执行到goto label时跳转到:label再次顺序执行。
说明:关闭进程
实例:taskkill /f /im notepad.exe——根据进程映像名来关闭进程
说明:输出重定向命令,>与>>的区别在于>会清除原有文件,而>>只会在原有文件的基础上追加
实例:echo hello world >> hello.txt——会在cmd的当前目录下生成hello.txt文件
大部分windows命令来源http://hi.baidu.com/hackerlinux/item/2d5a0dd51c2e8449fb5768dc