MortScript使用教程.docx
《MortScript使用教程.docx》由会员分享,可在线阅读,更多相关《MortScript使用教程.docx(21页珍藏版)》请在冰豆网上搜索。
MortScript使用教程
[技术]MortScript使用教程(4.3b11BETA版)
一、MortScript概述:
Mort:
批量;Script:
脚本;MortScript:
批处理脚本;(故为顺序逐条执行)
它是一种解释程序,就象VisualBasic的即时解释环境一样。
所以,它不生成EXE等可执行程序,而是由MortScript.exe来运行*.mscr或
*.mortrun的脚本文件。
当然,如果进行了安装,或设置了文件关联,则可直接点击脚本文件运行。
二、mscr脚本概述:
*.mortrun格式为MortScript的前身MortRunner的兼容脚本。
*.mscr格式可用任意文本编辑器来编写脚本,如windows自带的记事本,保存
格式推荐ANSI,当然,它还兼容UNICODE格式。
文件名及内容均不区分大小写。
脚本里的空格、制表符、换行连接符:
空格和制表占位符可放在命令、函数名、括号、参数、运算符、选项的前、后等位置,但均被忽略
,字符串中需要使用空格则应放在引号内。
换行连接符采用\符,放置于所在行的行末。
未指定路径则默认当前脚本所在路径。
注释行则是以#开头的行。
在INI文件中,则使用;进行注释。
结束以:
Exit,退出和结束脚本。
三、MortScript功能:
1、运行、激活,隐藏,关闭应用程序。
2、根据指定条件,执行或延时执行程序、脚本。
3、模拟键盘、鼠标、触笔操作。
4、复制、重命名、移动、删除文件或文件夹,创建文件夹,以及创建快捷方式。
5、支持ZIP格式压缩包。
6、读、写文本文件。
7、读、改注册表。
8、下载、创建、关闭链接。
9、做判断、循环操作。
10、部分系统的旋屏、音量、背光、重启操作。
四、MortScript安装包结构解读:
pc:
分别适用WM、CE、SP、win2000、XP、vista系统设备绿色使用。
setup:
分别适用WM、CE、SP系统设备,通过PC连接设备同步安装。
cab:
分别适用WM、CE、SP系统设备直接安装。
killproc.exe:
CE系统结束进程用。
不用此功能时,可以不要该文件。
mortzip.dll:
除PC系统外适用,用于ZIP压缩包的解压支持文件。
setup.dll:
除PC系统外适用,用于CAB包安装、卸载信息记录。
此二个DLL文件,如不使用上述二个功能时,可以不要。
另:
适用CE系统的版本,基本兼容适用WM系统。
Autorun.exe:
运行该程序,执行同名.mscr脚本,该程序可改名。
不改名可放在2577或0文件夹,而得以在拨、插储存卡时支持自动运行(插
卡时执行autorun.mscr,拨卡时执行autoexit.mscr,老程序则为:
autorun.mortrun和autoexit.mortrun),当然,并不是所有设备都支持该
功能。
且该程序需要MortScript.exe主程序支持。
五、一个PPC独有的可选参数:
/wait=n
n为一个以秒为单位的数字,除此外的所有类似于此的表达式均为变量的定义表达,当然,所有其他参数也不会以/或-开始。
该功能用于如关
联了PPC按键,但在PPC唤醒时段不能执行脚本时候的延时辅助。
不过,MortScript已默认5秒延时。
六、帮助手册PDF里的命令语法样式说明:
粗体字:
命令、函数名、关键字。
斜体字:
变量,常用表达式。
[]:
中括号为可选项(即可省略项)。
{}:
花括号为可多选项或省略项。
():
分组,经常用|符来列出可选项。
注:
函数不能省略括号,命令可以省略。
如:
message("你好!
")和message"你好!
"
X|Y|Z:
必选其中一个选项,常为定值选择。
七、常用语法:
关键字:
"XXX"
注:
引号在字符串里的引用,需要双层使用。
^CR^:
回车;^LF^:
换行;^NL^:
换行;^TAB^:
制表符。
(^CR^^LF^=^NL^)
字符串表达式:
value=Eval(string)
常数:
3.1415926
变量:
X=表达式
Set(variable,expression)
变量名由:
字母、数字(不能以数字打头)、下划线组成,且不区分大小写。
X+=1相当于x=x+1;类似的双目运算符还有:
-=、*=、/=、&=、\=。
预定义变量:
TRUE,ON,YES:
初始值为1;
FALSE,OFF,NO:
初始值为0;
CANCEL:
初始值为2;
PI:
3.14159266535897932384626433832759
SQRT2:
1.4......
PHI:
1.6......
EULER:
2.7......
全局变量:
Global(variable{,variable})
局部变量:
Local([variable{,variable}])
数组array[]:
实质一种特殊类型的变量。
数组名和元素名也是不区别大小写的。
清除变量:
Clear(variable)
检验变量:
bool=IsEmpty(variable)
返回变量类型:
int=VarType(variable)
返回值列表:
var_empty;var_int;var_float;var_string;var_array;var_window。
函数:
函数名(参数)
运算符:
(按由高到低优先级列表)
()
NOT
^
*,/,MOD
+,-
&,\
>,>=,<,<=,=,<>
gt,ge,lt,le,eq,ne
condition?
true:
false
AND,&&
OR,||
八、流程控制语句:
1、条件判断控制:
If(wndExists("Word"))
EndIf
While(X<>5)
EndWhile
If(表达式)
{语句}
{ElseIf(表达式)
{语句}}
[Else
{语句}]
EndIf
2、多重分支控制:
Switch(表达式)
Case(参数{,参数})
{指令}
{Case(参数{,参数})
{指令}}
{Default
{指令}}
EndSwitch
选择对话框:
(
Choice(title,hint,value,value{,value})
Choice(title,hint,array)
ChoiceDefault(title,hint,default,timeout,value,value{,value})
)
Case(value{,value})
{instructions}
{Case(value{,value})
{instructions}}
{Default
{instructions}}
EndChoice
示例:
choice("Test","selectanumber","one","two","three")
case
(1)
message("one")
case(2,3)
message("twoorthree")
case(3)
message("three")
case(0)
message("cancel")
exit
endchoice
3、条件循环控制:
while(条件)
{表达式}
endwhile
4、迭代循环:
ForEachvariable{,variable}intype(parameter{,parameter})
{instructions}
endforeach
ForEachvariableinvalues(value{,value})
ForEachvariableinarray(arrayvariable)
ForEachkey,valueinarray(arrayvariable)
ForEachvariableinsplit(string,separator,trim?
)
ForEachvariableinCharsof(string)
ForEachvariableininiSections(filename[,codepage])
ForEachkey,valueininiKeys(filename,section[,codepage])
ForEachvariableinregSubkeys(root,key)
ForEachvalue,dateinregValues(root,key)
ForEachvariableinfiles(searchexpression)
ForEachvariableindirectories(searchexpression)
5、常数循环:
Repeat(count)
{instructions}
EndRepeat
6、FOR循环:
Forvariable=starttoend[stepstep]
{instructions}
Next
7、中断和继续:
中断:
Break[(structuretype)]
继续:
Continue[(structuretype)]
8、错误处理:
Try
instructions
{Catch
instructions}
EndTry
错误提示等级:
ErrorLevel(errorlevel)
off:
关闭出错提示;critical:
特殊提示;syntax:
语法错误提示(参数错误;无效命令;函数名);error:
其他错误;warn:
文件或文件夹
的移动,复制,重命名出错。
9、子程序及函数的调用:
Subsubroutine[(parameter{,parameter})]
{instructions}
EndSub
内部:
Call(subroutine{,parameter})
CallFunction(subroutine,variable{,parameter})
外部:
CallScript(MortScriptfile{,parameter})
CallScriptFunction(MortScriptfile,variable{,parameter})
10、包含子程序的其他文件命令:
Include(file)
11、参数返回:
Return(value)
12、子程序的退出:
ExitSub[(value)]
九、字符串操作:
int=Length(string)
返回字符串字数。
(含字符串里的空格)
string=SubStr(string,从左往右第几位[,截取几个])
字符串截取。
截取长度省略或超长,则截取至完。
截取长度短于字串数,则返回空字符串。
位数为负时,则反向截取。
string=CharAt(string,位置)
返回字符串指定位置的字符。
string=Part(string,separator,index[,trim?
])
返回字符串指定分隔符部分,并修整移除空格旁的部分。
index可为负。
string=Find(stringtocheck,stringtosearch[,start])
字符串包含查找。
返回第二个字符串,包含于第一个字符串的位置。
start为位置参数。
查找区分大小写。
int=ReverseFind(string,character)
返回字符所在字符串位置的倒数位置。
string=Replace(source,old,new)
返回被新替换旧字串后的目标字符串。
string=ToUpper(string)
string=ToLower(string)
大小写转换。
string=UcChar(value)
int=UcValue(string)
字符和Unicode值转换。
string=FilePath(filewithpath)
string=FileBase(filewithpath)
string=FileExt(filewithpath)
文件路径、文件名、文件扩展名的截取。
十、数学函数:
string=Format(value,decimals)
返回值保留小数点后几位,由decimals指定倍数。
string=NumberToHex(intvalue)
int=HexToNumber(string)
字符的十六进制转换。
int/float=Round(value[,precision])
int/float=Floor(value[,precision])
int/float=Ceil(value[,precision])
四舍五入;四舍五入并取整;取整;
int=Rand(max)
float=Rand()
取随机值。
整形取值范围为零至给出的最大值减1。
浮点型为零至0.999...
float=Sin(radians)
三角函数。
函数有:
cos,tan,sinh,cosh,tanh,arcsin,arccos,arctan。
float=Log(value)
对数与指数。
函数有:
Log10,Exp。
float=Sqrt(value)
平方根。
int=CompareFloat(value1,value2,precision)
浮点数比较。
value=Min(value,value{,value})
value=Max(value,value{,value})
获取最大或最小值。
十一、数组:
(略)
十二、执行应用程序与打开文档:
Run(application[,parameter])
可执行文件,快捷方式*.lnk,文档均可,必要时需指定应用程序的完整路径。
例:
Run("\windows\Pword.exe","\Mydocuments\doc.psw")
RunWait(application[,parameter])
同上,区别在于:
1.本命令直到执行程序执行结束后,才继续下一条命令。
2.不能使用快捷方式*.lnk文件。
RunAt(Unixtimestamp,application[,parameter])
RunAt(year,month,day,hour,minute,applikation[,parameter])
于指定时间运行程序。
PC上无效,部分WM5系统的PPC无效。
RunOnPowerOn(application[,parameter])
RemoveNotifications(application,[parameter])
十三、应用程序窗口:
Show(window):
据标题显示并激活一个窗口。
注意标题不要使用特殊点及大写。
Minimize(window)
据标题隐藏并最小化一个窗口。
Close(window)
据标题关闭并结束一个窗口。
部分特殊程序不支持。
window=ActiveWindow()
获取一个活动窗口的标题。
bool=WndActive(window)
检查一个窗口是否被激活。
返回的是一个布尔值。
bool=WndExists(window)
检查一个窗口是否存在。
WaitFor(window,seconds)
据时等到窗口存在。
WaiForActive(window,seconds)
据时等到窗口激活。
string=WindowText(x,y)
获取窗口标题/内容元素。
GetWindowPos(window,left,top,right,bottom)
int=WndLeft(window)
int=WndRight(window)
int=WndTop(window)
int=WndBottom(window)
获取窗口坐标,左,右,上,下位置。
十四、键操作:
键盘、鼠标(触笔)
SendCommand([window,]commandid)
SendOK[(window)]
SendCancel[(window)]
SendYes[(window)]
SendNo[(window)]
发送特殊命令。
省略窗口标题指定,则对当前激活窗口进行操作。
SendCommand([window,]commandid)
PostMessage([window,]messageid,wparam,lparam)
SendMessage([window,]messageid,wparam,lparam)
int=SendMessage([window,]messageid,wparam,lparam)
发送高级命令消息。
SendKeys([window,]string)
模拟打字。
SendSpecial(keyname[,state])
模拟按键。
键名字符串不区分大小写。
省略窗口标题参数,则对当前激活窗口作用。
状态参数:
省略时相当于短按或松开。
设为down和up时,
相当于按下不放。
可模拟键:
alt,ctrl,shift,cr,win,context,tab,esc,space,up,down,left,right,home,end,pageup,pagedown,delete,backspace,insert,snapshot,f1
-f12,leftsoft,rightsoft。
Snapshot[(window)]
抓屏至剪切板。
SendCtrlKey([window,]key)
发送CTRL+指定键至指定窗口。
键名不区分大小写。
MouseClick([window,]x,y)
RightMouseClice([window,]x,y)
MiddleMouseClick([window,]x,y)
模拟鼠标单击,坐标位置从左上角开始。
MouseDbClick([window,]x,y)
RightMouseDbClice([window,]x,y)
MiddleMouseDbClick([window,]x,y)
模拟鼠标双击。
MouseDown([window,]x,y)
MouseUp([window,]x,y)
RightMouseDown([window,]x,y)
RightMouseUp([window,]x,y)
MiddleMouseDown([window,]x,y)
MiddleMouseUp([window,]x,y)
模拟鼠标压、放操作。
十五、等待、延时:
Sleep(milliseconds)
暂停指定时间,单位毫秒。
SleepMessage(seconds,message[,title[,OKallowed?
[,condition]])
倒计时消息框。
十六、时间:
int=TimeStamp()
int=MakeTimeStamp(year,month,day[,hour[,minute[,second]]])
返回1970-01-01后的系统当前时间。
string=FormatTime(format[,timestamp])
时间的格式输出:
H:
Hour(00-23)
h:
Hour(01-12)
a:
am/pm
A:
AM/PM
i:
Minute(00-59)
s:
Seconds(00-59)
d:
Day(01-31)
m:
Month(01-12)
Y:
Year(4digits)
y:
Year(2digits)
w:
Dayofweek(0=Sundayto6=Saturday)
u:
Unixtimestamp
{MM}:
如January
{M}:
如Jan
{WW}:
如Monday
{W}:
如Mon
GetTime(variable,variable,variable,variable,variable,variable)
获取系统当前时间。
时分秒日月年。
SetTime(hour,minute,second[,day,month,year])
SetDate(day,month,year)
设置系统时间、日期。
十七、文件、目录的操作:
Copy(sourcefile,targetfile[,overwrite?
])
单文件复制。
overwrite取值为true或false,决定当存在目标文件时,是否覆盖。
XCopy(sourcefiles,targetdirectory[,overwrite?
[,subdirs?
]])
多文件、文件夹复制。
源文件可使用*和?
通配符。
overwrite取值为true或false,决定当存在目标文件时,是否覆盖。
subdirs决定是否包括子文件夹。
Rename(sourcefile,targetfile[,overwrite?
])
重命名或移动文件。
overwrite取值为true或false,决定当存在目标文件时,是否覆盖。
Move(sourcefiles,targetdirectory[,overwrite?
[,subdirs?
]])
多文件或文件夹的移动。
源文件可使用*和?
通配符。
overwrite取值为true或false,决定当存在目标文件时,是否覆盖。
subdirs决定是否包括子文件夹。
Delete(files)
删除文件。
支持通配符和路径。
DelTree(files)
删除文件夹。
支持通配符和路径。
CreateShortcut(shortcutfile,targetfile[,overwrite?
])
创建快捷方式。
overwrite取值为true或false,决定当存在目标文件时,是否覆盖。
例:
CreateShortcut("\windows\startmenu\test.lnk","\storage\test.exe",true)
MkDir(directory)
创建文件夹。
不能一次创建多层文件夹。
RmDir(directory)
删除一个空文件夹。
ChDir(directory)
切换当前文件夹。
相当于电脑DOS里的CD命令。
仅适用于PC。
x=SystemPath(type)
获取系统路径。
type必须为字符串,如:
"StartMenu"
type的几个常用参数:
ProgramsMenu:
开始菜单里的Programs。
StartMenu:
开始菜单。
smartphones不适用。
ScriptExe:
主程序MortScript所在路径。
smartphones不适用。
ScriptPath:
当前脚本所在路径。
ScriptName:
当前脚本名称。
ScriptExt:
当前脚本的扩展名。
十八、文本文件的读、写:
string=ReadFile(filename[,length[,codepage]])
string=ReadLine(filename[,codepage])
读取一个文本文件内容。
最大长度为1MB
读取一个文本文件的一行。
再次运行则读取下一行。
codepage设置字符集。
默认使用当前系统字符集。
支持INI文件。
WriteFile(filename,contents[,append?
[,codepage]])
根据内容创建一个文本文件。
若文件已存在,则被覆盖。
string=IniRead(filename,section