您的位置:首页 > 编程语言 > Lua

脚本语言之Lua与Windows批处理的初步认识

2013-02-08 21:46 429 查看

1.脚本语言介绍

脚本语言是一种动态语言(数据类型不在声明的时候确定,而是在使用的时候确定),是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。

脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。它的命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批量处理语言或工作控制语言。​

一个脚本通常是解释运行而非编译。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工作。而宏语言(EXCEL)则可视为脚本语言的分支,两者也有实质上的相同之处。

2.值与类型

2.1 Lua

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中唯一的一种数据结构。

2.2 Windows批处理

Windows中的批处理也是动态语言,跟C语言中的数据类型比较相近。行注释 rem或::,C语言中的多行注释/*
*/也适用于批处理。

3.变量、表达式与控制结构

3.1 Lua

3.1.1
变量

Lua中有三种变量:全局变量、局部变量,还有table的域。任何变量都被假定为全局变量,除非显示的以local修饰定义;局部变量有其作用范围:局部变量可以被定义在它作用范围中的函数自由使用。在变量首次声明时,变量的值均为nil。

3.1.2
表达式

1) 数学运算操作符

Lua支持常见的数学运算操作符:二元操作 +、-、*、/、%、^(幂);一元操作
-。如果对数字转化成字符可以用string中的format。

2) 比较操作符

Lua中的比较操作符:==、~=(不等于)、<、>、<=、>=。这些操作的结果不是false就是true。

3) 逻辑操作符

Lua中的逻辑操作符:and、or、not。和控制结构一样,所有的逻辑操作符把false和nil作为假,其他的都是真的。

4) 连接符

Lua中字符串的连接操作符:..(就是两个点)

5) 取长度操作符

取长度操作符:#。我自己测试时没有成功过,也不知道是不是版本问题。

6)
函数定义

function block end。block是语句块

3.1.3
控制结构

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循环结束后继续使用。如果你需要保留这些值,那么就在循环结束前赋值到别的变量里去。

3.2.Windows批处理

3.2.1 变量

windows批处理的变量最常见的是环境变量,环境变量中的PATH变量在编译器的配置时会经常碰到,因为配置好PATH变量后,你在cmd(命令提示符)中输入的命令才会被执行。比如说在cmd中你输入的是xx.exe,而PATH中有xx.exe的路径,则该exe会被执行。

3.2.2 表达式

1)
比较操作符

比较操作符:==、EQU(等于)、NEQ(不等于)、LSS(小于)、LEQ(小于或等于)、GTR(大于)、GEQ(大于或等于);以字符来表示比较操作时需要有空格。

2) 逻辑操作符

逻辑操作符:not,逻辑非

3.2.3
控制结构

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命令下面会提到

4.Windows批处理中的常见命令

在cmd(命令提示符)中输入命令加/?会显示命令的帮助文档。如dir /?,如果在命令前加@,则该命令不会显示在cmd上

4.1 rem

说明:批处理中的注释

实例:rem cd /d d:/music

4.2 cd

说明:更改目录或显示当前目录

实例:cd /d d:/music——/d跳转到指定目录下

cd \ ——退回到当前盘的根目录

cd .. ——退回到上一级目录

4.3
copy

说明:复制文件

实例:copy d:/music/hello.mp3 d:——复制hello.mp3到D盘下

xcopy也是复制命令,但功能比copy多

4.4 dir

说明:显示目录下的文件和子目录

实例:dir ——输出cmd的当前目录下的文件和子目录

4.5 del

说明:删除文件

实例:del d:/music/hello.mp3——删除指定路径下的mp3文件

4.6 md

说明:创建文件夹

实例:md file
——在cmd的当前目录下产生一个file名字的文件夹

4.7 rd

说明:删除文件夹

实例:rd file
——在cmd的当前目录下删除file名字的文件夹

4.8 ping

说明:网络中的通信协议,网络是否连通

实例:ping 127.0.0.1——本机回环地址,查明网卡是否可用

ping 127.0.0.1 –n 10> nul——发送10个ICMP的ECHO包,可以用作延时

4.9 telnet

说明:检测端口是否被占用

实例:telnet 127.0.0.1 8080——检测8080端口是否被占用

4.10 echo

说明:显示信息

实例:echo message echo——在cmd中显示message echo信息

echo on 与 echo off——echo on是把它下面的命令(如ping 127.0.0.1)显示在cmd中,echo
off不显示命令。如果在echo前加@,则不会显示echo on/off 命令

4.11 call

说明:调用另一个批处理,并且不终止父批处理

实例:call d:/music/music.bat——调用D盘music文件夹下的music.bat批处理文件,执行完后再返回父批处理,也可以调用其他类型的可执行文件

4.12 start

说明:可以启动指定的命令或程序

实例:start d:/music/music.bat——异步方式调用D盘music文件夹下的music.bat批处理文件,也可以是指定的可执行文件

4.13 set

说明:设置环境变量的值

实例:set var=variable——设置环境变量var的值为variable,设置好后查看的方式是用echo命令,如echo
%var%即可得到环境变量var的值

4.14 goto

说明:跳转作用

实例::label …….goto label——顺序执行语句,当执行到goto label时跳转到:label再次顺序执行。

4.15 taskkill

说明:关闭进程

实例:taskkill /f /im notepad.exe——根据进程映像名来关闭进程

4.16
>、>>

说明:输出重定向命令,>与>>的区别在于>会清除原有文件,而>>只会在原有文件的基础上追加

实例:echo hello world >> hello.txt——会在cmd的当前目录下生成hello.txt文件

大部分windows命令来源http://hi.baidu.com/hackerlinux/item/2d5a0dd51c2e8449fb5768dc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: