⑴ 通配符的使用方法.
通配符的使用 在使用文件时,主文件名和扩展名中还可以使用通配符“*”“?”。其中“*”代表从它所在位置直到“.”(主文件名中为到“.”前,扩展名为“.”后)的所有字符;“?”代表它所在位置的任意字符。 实例: A.?? 表示文件主名为A,扩展名不超过两个字符的文件 ???.com 表示文件名不超过三个字符,扩展名为COM的文件 *.* 表示所有文件 ABC.* 表示文件名为ABC,具有任意扩展名的文件 *.EXE 表示以EXE为扩展名的所有文件 A*.* 表示以字符A开头的所有文件 例如: ABC.txt ABD.com等 A??.* 表示文件主名以A开头且不超过三个字符,具有任意扩展名 的文件 tabs) %x 匹配任何数量的非空格 [range] 匹配任何数量的在[range]中列出的字符 ^ 强制从一行的开始进行匹配 $ 强制匹配到一行的结束 (pattern) 保存匹配的式样到参数%1~%9 ~ 包括其中的字符不会被解释为特殊字符 {val1|val2|val3|…} 匹配其中列出的任何特殊的串 {^string} 不匹配其中包括的串 使用[range]时,你可以在其中列出需要的字符例如 [abc] 或使用范围 [a-c] 。 为了匹配特殊字符本身,可以使用~将特殊字符括住,例如:~[test~] 将匹配字符串 [test] 而不是作为 [range] 来匹配。 只使用$可以匹配一个空行。 别名中使用参数的例子 我们在解谜过程中向npc提出的问题通常是以: ask npc about here ask npc about rumors ask npc about name 这样三个命令开始的,把他们定义成别名可以节省一些时间,像这样: #al askn {ask %1 about here;ask %1 about here;ask %1 about name} 可如果npc的名字有两个单词,或一堆同名的npc中你要问其中第二个,就需要把别名 中的参数改为%-1,此时执行askn bing 2或askn tian bing就不会出错了。 为了更好的理解参数的作用,试试执行下面的命令: #al tt test1 %1 test2 %2 test3 %-1 test4 %-2 看看执行{tt a1 a2 a3 a4 a5}的结果,一切都清楚了吧? 表达式 当执行运算时,如果所有参数均为数字,则执行数学运算,否则执行字符串操作。以 下是一些常用的表达式(v1和v2代表变量或另外的表达式): v1+v2 如果v1或v2不是数字,则执行字符串相加 v1-v2 从v1中减去v2 v1*v2 相乘 v1/v2 v1除v2,结果不含小数 v1\v2 取模 v1&v2 逻辑运算and v1 and v2 同上 v1 | v2 逻辑运算or v1 or v2 同上 v1 xor v2 逻辑运算xor v1 = v2 如果v1等于v2返回真 v1 > v2 如果v1大于v2返回真 v1 < v2 如果v1小于v2返回真 v1 >= v2 如果v1大于等于v2返回真 v1 <= v2 如果v1小于等于v2返回真 v1 <> v2 如果v1不等于v2返回真 v1 != v2 同上 v1 =~ v2 如果表达式v1中的pattern包含v2,返回真 v1 ~= v2 同上 -v1 返回v1的负值 !v1 逻辑运算非 命令: number] Syntax:牋?#number command 这个命令向MUD重复发送number次命令,number必须是一个常数,如果要使用变量,请 使用loop命令。当前已经重复的计数保存在系统变量%repeatnum中。 实例: #4 fight bing %i 命令将被解释成{fight bing 1;fight bing 2;…;fight bing 4}发往MUD10 abort Syntax:牋?#AB 停止分析处理当前的命令行中#ab以后的部分 实例: get all corpse;#ABORT;split 在这个例子中,split将被忽略 action Syntax:牋?#AC pattern command [classname] Related:牋?#TRIGGER #T+ #T- #IGNORE 这是zMUD中最有用的特性之一。当从MUD中收到一条匹配的文本时,预先定义的命令将 被执行。这条命令的第一个参数是被匹配的文本,如果文本中包含空格,你需要将它 用括号{}括起来。pattern中能够包含特殊的pattern matching symbols 和通配符。 第二个参数是将要被执行的命令,超过一个单词的命令也需要使用括号{}。第三个参 数用于给不同的触发动作命名分类,便于管理。高级的触发设置必须使用参数 (Preferences)对话框,在对话框中,你可以决定触发的动作是紧跟在匹配的文本之 后还是在新的一行中执行。 一个简单的例子: #AC {你买下一件藤甲} {wear jia} 这样,无论何时只要你买了藤甲,立刻可以自动穿上。 自动登录的例子: #AC {^您的英文名字:} {river} #AC {^请输入相应密码:} {12345} 然后在参数对话框中关闭 Trigger on Newline 设置并且打开 Trigger on Prompt 这 样名字和密码将紧接着提示行输入而不会等待换行。注意,字符 ^ 将强制从一行的头 部开始匹配。 触发中的参数 #AC {^You get (%d) coins} {chat I get %1coin } rich 当你看到一行“You get [number] coins”时,其中的数值将被存放在变量%1中,其 后执行的命令可以使用这个数值。在这个例子中用到了类(class)名rich,这样你就 能够使用t+和t-命令来打开或关闭这个触发。 add Syntax:牋?#AD variable amount 这个例子允许你做一个简单的算术计算。amount可以是数值或变量。如果要做减法, 可以使用负值。复杂一些的算术计算,请使用 #math 命令。 实例: #AD moves 1 给变量@moves加一 #ACTION {You get (%d) coins} {#AD gold %1} 当捡到钱时,把捡钱的数量加到 @gold 变量中 alarm Syntax:牋?#ALA timepattern command Related:牋?#TRIGGER 建立一个基于时间的触发,而不是根据从MUD中获得的信息触发。timepattern可以是 特定的时间或包括通配符。如果在minus前加上(-),则表示连线时间而不是实际时 间。 timepattern 的格式表示成 hours:minutes:seconds ,其中的小时和分钟是可选项, 如果不指明,则假定小时和分钟被通配符*取代。通配符*可以代替任何数值,而*10可 以匹配10、20、30等等。你也可以指定几个数值用(|)来分隔。Finally, you can put parenthesis around the wildcards to save the values matched to the %1..%9 parameters。(这句话我不懂,谁来帮我?) 实例: #ALARM -30:00 {save} 这里的 hour 没有指定,所以默认为*。 因此,这个例子将在连线后每隔30分钟执行 save 命令。 #ALARM 3:00:00 {gossip Why arent you sleeping?} 命令将在凌晨3点触发。 #ALARM -59:(55|56|57|58|59) {#SHOW 60-%1} 这个命令在你连线时每个小时的最后5秒在屏幕上显示 5 4 3 2 1。 alias Syntax:牋?#AL [aliasname] [string] Related:牋?#VARIABLE 保存一个或一组命令到一个较短的别名中。当执行别名时,命令中的变量能够被扩 展。如果需要延迟变量扩展,可以使用两个变量标志(%%)。 如果不带参数执行命令alias,所有的别名将被列出在输出窗口。如果在命令alias中 指定别名,被指定的别名将被显示。 别名能够用<tab>键扩展。在命令行中键入一个别名并按下<tab>键,命令行中的别名 将被替换成别名中包含的命令。 如果在定义别名时使用参数(%1,%2,…),在命令行中紧随别名的文本将取代这些 参数。特殊的参数%-1到%-99表示-n之后的所有文本。(使用参数的例子) 实例 #AL fs {fill waterskin} 当执行fs时,fill waterskin将被送往MUD。 #AL fs {fill @container} 在别名中使用变量,变量可以在购买容器时用触发赋值。 #AL make {#ALIAS %1 {cast %1 %%1] 在这个例子中,执行make heal将发出#ALIAS heal {cast heal %1}命令,这样就建立 了一个新的别名heal。 all Syntax:牋?#ALL command 发送一个命令到所有角色的窗口 实例: #ALL quit 发送 quit 命令到所有激活的角色窗口。 backup Syntax:牋?#BA Related:牋?#PATH #RETRACE 从当前正在记录的路径中删除最后一步 实例: 如果当前路径是 .nsew 那麽执行 #BA 将使其成为 .nse 。如果当前路径是 .n4s 则 执行 #BA 后将成为 .n3s 。? beep Syntax:牋?#BEEP [value] Related:牋?#PLAY 在pc机喇叭中发声,value 对应相应的 windows 事件。 实例: #BEEP 16 播放windows 事件 16 的声音。 #BEEP;#WAIT 500;#BEEP beep两次,中间间隔0.5秒。 button Syntax:牋?#BU number 触发一个自定义按钮,编号(从1至16)决定触发的按钮。number 可以是一个变量。 实例: #BU 1 触发第一个按钮,效果相当于在屏幕上按下这个按钮 c+ Syntax:牋?#C+ [name] Related:牋?#C- 开始获取文本到窗口name中,如果省略name,文本将送入command editor,(如果 editor中的capturing设置可用)。如果在preferences对话框中选中Capture Commands设置,键入的命令也将被送往这个窗口。 例子: #c+ temp 开始拷贝所有从MUD中获得的文本到名为temp的窗口中 c- Syntax:牋?#C- Related:牋?#C+ 停止获取文本到另一个窗口 capture Syntax:牋?#CAP [number] [name] Related:牋?Editor window 获取最后number行送到另一个窗口。如果省略number,则只获取最后一行。如果 number是-1,所有的行将被拷贝。如果name省略,发送的目标将是command editor window。 例子 #tr {咖啡告诉你:救命!} {#cap tell} 将tell的内容存入名为tell的窗口,避免忽略。 case Syntax:牋?#CA index command1 [commandn] 允许从命令列表中选择一个命令执行。index参数决定执行哪一个命令。如果index大 于列表中的命令数,将从第一个开始重新选择。例如,列表中有4个命令,而index= 6,则第二个命令将被执行。你也可以用变量%random随机的选择需执行的命令。 实例: #CASE 2 {first command} {second command} {third command} 执行第二个命令 #CASE @joincmd {join} {rescue} 如果变量@join是奇数,执行join,偶数执行rescue。 #CASE %random {Hello} {Hi there} {Hiya} {Hi} 随机选择问候语。 character Syntax:牋?#CH Related:牋?#HOST #PW 从Charater atabase中返回当前角色的名字 colse Syntax:牋?#CL filenum Related:牋?#FILE 根据给定的文件号关闭文件,文件必须是已经用#file命令打开的。 实例: #CLOSE 1 关闭一号文件 clr 清除屏幕。如果要清空scrollback buffer并收回内存,请使用菜单命令Empty。 color Syntax:牋?#CO attribute [pattern] Related:牋?#HIGHLIGHT 如果省略pattern参数,这个命令将改变最后一行的颜色。颜色属性见下表。如果包括 pattern参数,将建立一个颜色触发,引起触发的条件除了字符对应外还需要有相同的 颜色。 Color values: black牋? 0 blue牋 1 green 2 cyan 3 red 4 magenta 5 brown 6 gray 7 tellow 14 white 15 bold 128 要显示亮色,在基本值上加8,作为背景颜色,需要用基本值乘16。例如:使用红色背 景的值是4*16或64。在前景上使用粗体字,需要再加128。这样,在蓝色背景上的粗体 白字的值是:128+1*16+15=159。 实例: #CO red 将最后一行的颜色变成红色 #CO bold,red 将最后一行变成红色粗体 connect Syntax:牋?#CON Related:牋?#DISCONNECT 断开并重新连接到当前的MUD,与菜单命令File/Reconnect 相同 cr Syntax:牋?#CR 送一个空行到MUD cw Syntax:牋?#CW color Related:牋?#COLOR 在一次成功的触发之后,改变引起触发的内容的颜色 实例: #TRIGGER {告诉你} {#CW red} 当有人tell 你时,显示较为醒目的颜色 dde Syntax:牋?#DDE server topic macro 这个命令允许你通过动态数据交换使用外部程序。zMUD也有一些内建的函数用于DDE: %dde(server,topic,item) %ddepoke(server,topic,item,value) %ddemacro(server,topic,macro) 如果你使用%ddeopen(server,topic)函数打开DDE连接,在其他函数中不再需要指明 server和topic,这个函数是全局性的,对于zMUD的任何窗口均有效。结束DDE连接 时,使用%ddeclose()函数。 zMUD也拥有自己的DDE服务,server名是zmud,topic也是zmud,item为data。 实例: #DDE NETSCAPE WWW_OpenURL {<a target="_blank" href="http://www.zg169.net/~czmud/index.html}">http://www.zg169.net/~czmud/index.html}</a> 使用netscape打开zMUD从入门到精通主页,因为~zMUD的特殊字符,所以需要再加一个 ~写成~。 #DDE ZMUD ZMUD {chat* bye;quit} 使用DDE向MUD发出命令 %dde(Excel,TEST.XLS,R1C1) 使用excel装入test.xls并返回单元R1C1的值。 %ddepoke(Excel,TEST.XLS,R1C1,@tank) 向test.xls的R1C1单元写入变量@tank的值 谁能用DDE写一个自动对诗的机器人? default Syntax:牋?#DE [special-char-string] Related:牋?#NODEF 保存你当前使用的特殊字符并恢复系统默认的特殊字符,在使用现成的命令脚本时, 这个命令可以保证脚本中的标准特殊字符被正确识别。使用#NODEF命令将恢复你自定 义的特殊字符。 zMUD中使用的特殊字符有 1 Command Char # 将紧随的字串解释为命令 2 Separator Char ; 分隔多个命令 3 Variable Char @ 用于扩展变量的值 4 History Char ! 调用命令缓冲区中的命令 5 Parameter Char % 指出系统变量和函数 6 Movement Char . 调用路径变量或函数 7 Focus Char : 向指定窗口发命令 8 Quote Char ~ 紧随其后的特殊字符当作普通字符 理 9 Must be a space at the end *? *fool 实例: #DEF 保存你当前使用的特殊字符并恢复系统默认的特殊字符 #DEF {xx$xxxxx } 保存你当前使用的特殊字符并回复默认的特殊字符,然后将@改为$。 disconnect Syntax:牋?#DI Related:牋?#CONNECT 断开当前的连接 实例: #TRIGGER {你已陷入半昏迷状态} {#DI} 断线就不会被杀死吗?我没试过,hehe。 ECHO Syntax:牋?#EC string Related:牋?#SAY 在当前窗口中显示字串,类似与say命令。除了用于离线测试trigger似乎没有别的用 处。 实例: ERASE Syntax:牋?#ERA filenum Related:牋?#FILE 从硬盘中删除用#file打开的文件 实例: #FILE 1 old.log #ERA 1 删除old.log文件,需要先用#file命令打开。 EXEC Syntax:牋?#EXEC command 执行一个命令,命令中可以包括变量 实例: #TRIGGER {^咖啡告诉你(*)} {#EXEC %1} 执行咖啡的指令。(我可没那麽傻) FILE Syntax:牋?#FI number name Related:牋?#READ #WRITE 打开文件准备读写。zMUD可以打开10个文件,文件号1~5打开文本文件,能够按顺序 读或追加,文件号6~10打开记录文件用于随机读写。如果nuber已经用于打开的文 件,则前一个文件将被关闭。打开的文件只能位于zmud.exe所在的目录且不能是 EXE,HLP和MUD文件。 实例: #FILE 1 test.txt 打开text.txt作为文件1。 FIND Syntax:牋?#FIN 找出在当前地图上的定位,通过look命令用当前房间的描述比较地图数据定位匹配的 房间,与automapper的菜单命令find作用相同。 FORALL Syntax:#FO list command 逐条列出字串列表内容并执行命令。列表使用|分隔,逐个赋值给变量%i,并执行命 令。 实例: list=sys|ups|yahoo #froall @list {kill %i} 我一定是疯了。 FREEZE Syntax:牋?#FR [value] 切分屏幕查看以前的显示,value=0表示恢复屏幕。这条命令相当于Ctrl-z或单击右边 的滚动条。(所以没什么用) GAG Syntax:牋?#GA [pattern] Related:牋?#UNGAG 如果pattern省略,命令将从屏幕上删除最后一行。如果包括pattern,将删除所有匹 配行,相当于#ACTION pattern '#GAG'。 实例: #ga 咖啡 这叫眼不见为净。 HELP Syntax:牋?#HE [command] 不带参数相当与从菜单中选择help,否则显示指定命令的参数。 H+ Syntax:牋?#H+ Related:牋?#H- 从命令缓冲区中取得下一条命令,只在使用过#h-命令后有效,相当于向下的箭头键。 H- Syntax:牋?#H- Related:牋?#H+ 从命令缓冲区中取得上一条命令,相当于向上的箭头键。 HISTORY Syntax:牋?#HIS 显示命令缓冲区中的命令,每条显示的命令都带有行号,可以用!加行号来执行某条命 令。!!执行最新的命令。!+字母将执行最近一个以!后字母开头的命令。命令缓冲区 的大小默认为20,可由参数对话框改变。 你也可以用左键单击命令输入行左边的三角以弹出交互命令缓冲区对话框来选择命 令,单击将命令送至命令输入行以供编辑,双击将命令直接送往MUD。 <tab>键可以配合命令缓冲区的使用,如果你用!加数字或字母,再按下<tab>键,命令 将拷入命令输入行以供编辑。 实例: #HI 显示最后20条命令 !! 执行最后一条命令 !3 执行命令缓冲区中的最后一条命令 !k 执行最后一条以k开头的命令 !k<TAB> 将最后一条以k开头的命令拷入命令输入行以供编辑 HIGHLIGHT Syntax:牋?#HI [pattern] Related:牋?#COLOR 如果省略pattern,最后一行文本将以高亮显示,如果包括pattern,匹配的文本将以 高亮显示。相当于命令#ACTION pattern '#HIGHLIGHT'。 HOST Syntax:牋?#HO Related:牋?#CHAR #PW 返回当前连接的主机名 IF Syntax:牋?#IF expression true-command [false-command] 执行条件分支,如果表达式为真,执行true-command,否则执行falise-command(可 选)。表达式中可以包含变量和运算子。 实例: #if (@qn>30) {learn_skills} 在战斗中如果潜能达到了30,执行别名learn_skills返回师父处学习。 #if (@hp>10) {exercise @hp} {exert recover} 如果气大于10就修炼内功,否则补气。 #IF (@line =~ "You receive (%d) coins") {split %1} 如果变量@line与pattern "You receive (%d) coins"匹配,执行{split %1},判断匹 配需要使用“=~”。 IGNORE Syntax:牋?#IG Related:牋?#T+ #T- 打开或关闭所有触发,第一次执行#ig 关闭所有触发,第二次执行恢复正常。 INPUT Syntax:牋?#IN string 将文本放入命令输入行,替换当前内容 实例: #in get @item 扩展变量item后将命令置入命令输入行 KEY Syntax:牋?#KE key command 定义按键执行的命令,key值需注明按键的全名,例如:F1,CTRL-A 或 ALT-F2 实例: #key F1 eat baozi 定义F1键执行eat baozi 命令 <ALT-D>={drink jiudai} 定义 ALT-D 键执行 drink jiudai 命令 KILLALL Syntax:牋?#KILLALL 删除所有的别名、宏、触发、<tab>缩写 LMAP Syntax:牋?#LM path command Related:牋?#LOOP 穿越指定的路径并在每个房间执行指定的命令,变量%i将记录房间数 实例: #LMAP 3sn {#SHOW %roomname(%i)} 从当前的地图定位向南走三步,向北走一步,并显示每个房间的名称 LOAD Syntax:牋?#LOA filename Related:牋?#SAVE 装入指定的设置文件,filename中可以使用变量。注意:装入新的设置文件时,原来 的设置文件中的改变不会被保存 实例: #load dc 装入设置文件dc.mud。(.mud是默认的扩展名) <F1>={#load combat};<F2>={#load cocial} 为战争与和平定制的设置文件分别用F1和F2载入 LOOK Syntax:牋?#LOOK 执行MUD的look命令并重新写入地图的房间数据 LOOP Syntax:牋?#LOO range command 重复执行由range指定数量的命令,range包括最小值和最大值,中间用逗号分隔,如 果range中只有一个数字,默认的最小值是1,循环的次数记录在变量%i中,可在命令 中调用。 实例: #LOO 3 north 向MUD中送入north命令3次 #LOO 3,4 {get all from corpse %i} 取出第三和第四具尸体中的所有东西 #LOO @num {eat baozi} 吃包子@num口 LOG Syntax:牋?#LO [filename] 开始在给定的文件中记录从MUD中获得的文本,如果文件不存在,则建立文件并开始记 录,如果文件已存在,则打开存在的文件并追加记录。省略参数用于开关记录 实例: #LO test.txt 开始将MUD的所有输出记入test.txt #LO 开关记录,如果正在记录,该命令将停止记录,否则开始记录 MAP Syntax:牋?#MAP direction Related:牋?#PATH 在当前路径上增加一个方向 #MAP north 如果当前路径是.s,则更新为.sn,同时向北移动一步 MATH Syntax:牋?#MAT variable expression Related:牋?#ADD 将表达式的结果赋值给变量。表达式中可以包括数字、逻辑运算和字符串函数,表达 式中包含的变量将被扩展。 实例: #MATH test (1+3)*4 将计算结果16赋值给变量test #MATH test2 @test-4 如果@test的值是16,则变量test2将被赋值12 #ALIAS add {#MATH value %1+%2} add 3 4 执行后变量value的值为7 MARK Syntax:牋?#MA Related:牋?#PATH 开始记录新的路径,正在记录的路径将被废弃 MEDIA Syntax:牋?#ME function Related:牋?#PLAY 向当前的多媒体设备发送命令,通常在#play之后使用,function中可以使用变量,可 用的function依设备不同而不同值,一般有: back 返回一步 close 关闭当前文件 eject 放弃当前设备 next 播放下一曲目 pause 暂停 paly
⑵ BAT文件里如何使用通配符
通配符可以使用在文件名中(包括扩展名),比如:*.exe表示当前路径下的所有.exe文件;ABC*.*表示当前路径下的所有ABC开头的文件;*与?为通配符,*表示若干个字符,?表示一个字符
⑶ 文件路径可以使用通配符吗
不可以文件路径是指你的文件存在硬盘中的逻辑地址,笼统点就是说你的文件在哪个盘里的哪个文件夹里,如果文件路径是d:asdfa.mp3,就是说a.mp3这个文件在D盘的asdf文件夹中。打开电脑上的文件夹,选中一个文件,可以看到此文件的完整路径并非用反斜杠字符分隔文件夹名来显示完整的文件或文件夹路径。
⑷ 计算机中常见的一些路径符号如 / \ // \\ # 等,请从文件路径表示方面简单的解释区分下。
“~/”:表示虚拟目录下的一个目录。
“/”:表示根目录。
“//”:绝对路径。
“.”:文件名分割符。
“..”:上一级目录。
“#”文件路径号。
"":文件显示分割符。
“?”文件通配符。
在不同的操作环境下这些符号的用法略有区别,一般一个较完善的操作系统有说明文件参照,dos下键入“help”命令。
(4)文件路径通配符扩展阅读
dos和Windows的比较:
Windows是一个多任务的操作环境,但它对程序编写的约束和限制比DOS高得多,因而许多程序员出于对Windows的不满及对DOS开发的价值和潜力的深刻认识,继续开发DOS软件。
由于多年的经验的积累,他们的软件开发水平越来越高,因此他们开发出的DOS软件的质量也越来越高。为了开发更多的软件并且增加开发的效率,他们设计了一个又一个DOS软件的开发工具
。而用这些开发工具的人也越来越多,并在国外迅速地流传开来,详情可见一篇叫作“DJGPP程序与保护模式”的文章(在“DOS文章”栏目中)。
一个尤为重要的是,正如上文所提到,虽然MS-DOS已经不再继续发展了,但并不意味着整个DOS也不再继续发展了。
MS-DOS的最高版本是8.0(包含在Windows ME中),随后Microsoft开始开发基于Windows NT构件的Windows,才成了真正独立的操作系统。
除了MS-DOS以外,其它的DOS也在发展着。仍在不断发展和更新中的DOS有FreeDOS、PTS-DOS、ROM-DOS等,这些DOS的功能都十分强大,往往超过MS-DOS,而且FreeDOS还是完全免费且自由开放的。
因此,程序员们完全可以为它们开发新的DOS软件,而不必依赖于MS-DOS。这大概是90年代末DOS的情况。
参考资料来源:网络-DOS
⑸ 有谁可以给我解释一下"通配符"的知识
通配符 1、基本的通配符有哪些? ·“?”可替代单个字符。 ·“*”可替代任意字符。 ·方括号“[charset]”可替代charset集中的任何单个字符。 对最后一条做些解释。[cChH]通配符便可替代c或h字符的大小写形式。 通配符集还能描述介于字符对之间的所有字符。如“[a-z]”就可以代 替任意小写字母,而[a-zA-Z]则可替代任意字母。注意可替代的字符 包括字符包括字符对之间的所有字符。 与DOS相比,UNIX的通配符机制要比DOS好得多。在DOS中,任何在“*” 之后,在“.”之彰的字符均被忽略,所以下面的指令将不能得到你想 象的结果。 del *bak.* 在DOS中,用户只能用此命令删除当前目前下的所有文件,除非系统要 求你不这样做。而在UNIX系统中,“*”可替代包括0在内的任意数字的 字符,但一行中的其余特征也仍需匹配,因此“bak.*”可匹配 newbak.save、oldbak.new甚至bak.temp,但不能和newbak匹配,因为后 者不含“.”。这非常巧妙,可大大方便用户,而“*bak”则可匹配以上 所有的词条,包括newbak。 2、能在一条指令中用多个通配符吗? 可以,如 rm a*out*tmp? 该命令可以删除一系列临时性的输出文件,如ab.out.temp1、ab.out.temp1 等。 3、如何利用通配符使指令更灵活? UNIX可将有一定关的文件看作一集合的一部分,用户可以用该集合去匹配。 所以,如果你需要删除file1.temp、file2.temp……file9.temp,只须健入: rm file[0-9].temp 该技巧的用处在于可以用删除那些相要删除的文件。如果你每天都要为一个 非常重要的数据库做一个“mp”报告,你把文件存入mp.'date%h%d', 它包括一系列文件如下: mp.jun23 mp jun24 mp jun25 mp.jun26 再让我们假设因为每个文件的容量都在100M左右,所以磁盘空间很快会被占满, 因此需要每隔几天删去一些老的文件,只留下最近的两个文件,为此,键入: rm –i *[34] 这条指令将删去那些以“”开头并以“3”或“4”结尾的文件。通配符的使用 在使用文件时,主文件名和扩展名中还可以使用通配符“*”“?”。其中“*”代表从它所在位置直到“.”(主文件名中为到“.”前,扩展名为“.”后)的所有字符;“?”代表它所在位置的任意字符。 实例: A.?? 表示文件主名为A,扩展名不超过两个字符的文件 ???.com 表示文件名不超过三个字符,扩展名为COM的文件 *.* 表示所有文件 ABC.* 表示文件名为ABC,具有任意扩展名的文件 *.EXE 表示以EXE为扩展名的所有文件 A*.* 表示以字符A开头的所有文件 例如: ABC.txt ABD.com等 A??.* 表示文件主名以A开头且不超过三个字符,具有任意扩展名 的文件 tabs) %x 匹配任何数量的非空格 [range] 匹配任何数量的在[range]中列出的字符 ^ 强制从一行的开始进行匹配 $ 强制匹配到一行的结束 (pattern) 保存匹配的式样到参数%1~%9 ~ 包括其中的字符不会被解释为特殊字符 {val1|val2|val3|…} 匹配其中列出的任何特殊的串 {^string} 不匹配其中包括的串 使用[range]时,你可以在其中列出需要的字符例如 [abc] 或使用范围 [a-c] 。 为了匹配特殊字符本身,可以使用~将特殊字符括住,例如:~[test~] 将匹配字符串 [test] 而不是作为 [range] 来匹配。 只使用$可以匹配一个空行。 别名中使用参数的例子 我们在解谜过程中向npc提出的问题通常是以: ask npc about here ask npc about rumors ask npc about name 这样三个命令开始的,把他们定义成别名可以节省一些时间,像这样: #al askn {ask %1 about here;ask %1 about here;ask %1 about name} 可如果npc的名字有两个单词,或一堆同名的npc中你要问其中第二个,就需要把别名 中的参数改为%-1,此时执行askn bing 2或askn tian bing就不会出错了。 为了更好的理解参数的作用,试试执行下面的命令: #al tt test1 %1 test2 %2 test3 %-1 test4 %-2 看看执行{tt a1 a2 a3 a4 a5}的结果,一切都清楚了吧? 表达式 当执行运算时,如果所有参数均为数字,则执行数学运算,否则执行字符串操作。以 下是一些常用的表达式(v1和v2代表变量或另外的表达式): v1+v2 如果v1或v2不是数字,则执行字符串相加 v1-v2 从v1中减去v2 v1*v2 相乘 v1/v2 v1除v2,结果不含小数 v1\v2 取模 v1&v2 逻辑运算and v1 and v2 同上 v1 | v2 逻辑运算or v1 or v2 同上 v1 xor v2 逻辑运算xor v1 = v2 如果v1等于v2返回真 v1 > v2 如果v1大于v2返回真 v1 < v2 如果v1小于v2返回真 v1 >= v2 如果v1大于等于v2返回真 v1 <= v2 如果v1小于等于v2返回真 v1 <> v2 如果v1不等于v2返回真 v1 != v2 同上 v1 =~ v2 如果表达式v1中的pattern包含v2,返回真 v1 ~= v2 同上 -v1 返回v1的负值 !v1 逻辑运算非 命令: number] Syntax:牋?#number command 这个命令向MUD重复发送number次命令,number必须是一个常数,如果要使用变量,请 使用loop命令。当前已经重复的计数保存在系统变量%repeatnum中。 实例: #4 fight bing %i 命令将被解释成{fight bing 1;fight bing 2;…;fight bing 4}发往MUD10 abort Syntax:牋?#AB 停止分析处理当前的命令行中#ab以后的部分 实例: get all corpse;#ABORT;split 在这个例子中,split将被忽略 action Syntax:牋?#AC pattern command [classname] Related:牋?#TRIGGER #T+ #T- #IGNORE 这是zMUD中最有用的特性之一。当从MUD中收到一条匹配的文本时,预先定义的命令将 被执行。这条命令的第一个参数是被匹配的文本,如果文本中包含空格,你需要将它 用括号{}括起来。pattern中能够包含特殊的pattern matching symbols 和通配符。 第二个参数是将要被执行的命令,超过一个单词的命令也需要使用括号{}。第三个参 数用于给不同的触发动作命名分类,便于管理。高级的触发设置必须使用参数 (Preferences)对话框,在对话框中,你可以决定触发的动作是紧跟在匹配的文本之 后还是在新的一行中执行。 一个简单的例子: #AC {你买下一件藤甲} {wear jia} 这样,无论何时只要你买了藤甲,立刻可以自动穿上。 自动登录的例子: #AC {^您的英文名字:} {river} #AC {^请输入相应密码:} {12345} 然后在参数对话框中关闭 Trigger on Newline 设置并且打开 Trigger on Prompt 这 样名字和密码将紧接着提示行输入而不会等待换行。注意,字符 ^ 将强制从一行的头 部开始匹配。 触发中的参数 #AC {^You get (%d) coins} {chat I get %1coin } rich 当你看到一行“You get [number] coins”时,其中的数值将被存放在变量%1中,其 后执行的命令可以使用这个数值。在这个例子中用到了类(class)名rich,这样你就 能够使用t+和t-命令来打开或关闭这个触发。 add Syntax:牋?#AD variable amount 这个例子允许你做一个简单的算术计算。amount可以是数值或变量。如果要做减法, 可以使用负值。复杂一些的算术计算,请使用 #math 命令。 实例: #AD moves 1 给变量@moves加一 #ACTION {You get (%d) coins} {#AD gold %1} 当捡到钱时,把捡钱的数量加到 @gold 变量中 alarm Syntax:牋?#ALA timepattern command Related:牋?#TRIGGER 建立一个基于时间的触发,而不是根据从MUD中获得的信息触发。timepattern可以是 特定的时间或包括通配符。如果在minus前加上(-),则表示连线时间而不是实际时 间。 timepattern 的格式表示成 hours:minutes:seconds ,其中的小时和分钟是可选项, 如果不指明,则假定小时和分钟被通配符*取代。通配符*可以代替任何数值,而*10可 以匹配10、20、30等等。你也可以指定几个数值用(|)来分隔。Finally, you can put parenthesis around the wildcards to save the values matched to the %1..%9 parameters。(这句话我不懂,谁来帮我?) 实例: #ALARM -30:00 {save} 这里的 hour 没有指定,所以默认为*。 因此,这个例子将在连线后每隔30分钟执行 save 命令。 #ALARM 3:00:00 {gossip Why arent you sleeping?} 命令将在凌晨3点触发。 #ALARM -59:(55|56|57|58|59) {#SHOW 60-%1} 这个命令在你连线时每个小时的最后5秒在屏幕上显示 5 4 3 2 1。 alias Syntax:牋?#AL [aliasname] [string] Related:牋?#VARIABLE 保存一个或一组命令到一个较短的别名中。当执行别名时,命令中的变量能够被扩 展。如果需要延迟变量扩展,可以使用两个变量标志(%%)。 如果不带参数执行命令alias,所有的别名将被列出在输出窗口。如果在命令alias中 指定别名,被指定的别名将被显示。 别名能够用<tab>键扩展。在命令行中键入一个别名并按下<tab>键,命令行中的别名 将被替换成别名中包含的命令。 如果在定义别名时使用参数(%1,%2,…),在命令行中紧随别名的文本将取代这些 参数。特殊的参数%-1到%-99表示-n之后的所有文本。(使用参数的例子) 实例 #AL fs {fill waterskin} 当执行fs时,fill waterskin将被送往MUD。 #AL fs {fill @container} 在别名中使用变量,变量可以在购买容器时用触发赋值。 #AL make {#ALIAS %1 {cast %1 %%1] 在这个例子中,执行make heal将发出#ALIAS heal {cast heal %1}命令,这样就建立 了一个新的别名heal。 all Syntax:牋?#ALL command 发送一个命令到所有角色的窗口 实例: #ALL quit 发送 quit 命令到所有激活的角色窗口。 backup Syntax:牋?#BA Related:牋?#PATH #RETRACE 从当前正在记录的路径中删除最后一步 实例: 如果当前路径是 .nsew 那麽执行 #BA 将使其成为 .nse 。如果当前路径是 .n4s 则 执行 #BA 后将成为 .n3s 。? beep Syntax:牋?#BEEP [value] Related:牋?#PLAY 在pc机喇叭中发声,value 对应相应的 windows 事件。 实例: #BEEP 16 播放windows 事件 16 的声音。 #BEEP;#WAIT 500;#BEEP beep两次,中间间隔0.5秒。 button Syntax:牋?#BU number 触发一个自定义按钮,编号(从1至16)决定触发的按钮。number 可以是一个变量。 实例: #BU 1 触发第一个按钮,效果相当于在屏幕上按下这个按钮 c+ Syntax:牋?#C+ [name] Related:牋?#C- 开始获取文本到窗口name中,如果省略name,文本将送入command editor,(如果 editor中的capturing设置可用)。如果在preferences对话框中选中Capture Commands设置,键入的命令也将被送往这个窗口。 例子: #c+ temp 开始拷贝所有从MUD中获得的文本到名为temp的窗口中 c- Syntax:牋?#C- Related:牋?#C+ 停止获取文本到另一个窗口 capture Syntax:牋?#CAP [number] [name] Related:牋?Editor window 获取最后number行送到另一个窗口。如果省略number,则只获取最后一行。如果 number是-1,所有的行将被拷贝。如果name省略,发送的目标将是command editor window。 例子 #tr {咖啡告诉你:救命!} {#cap tell} 将tell的内容存入名为tell的窗口,避免忽略。 case Syntax:牋?#CA index command1 [commandn] 允许从命令列表中选择一个命令执行。index参数决定执行哪一个命令。如果index大 于列表中的命令数,将从第一个开始重新选择。例如,列表中有4个命令,而index= 6,则第二个命令将被执行。你也可以用变量%random随机的选择需执行的命令。 实例: #CASE 2 {first command} {second command} {third command} 执行第二个命令 #CASE @joincmd {join} {rescue} 如果变量@join是奇数,执行join,偶数执行rescue。 #CASE %random {Hello} {Hi there} {Hiya} {Hi} 随机选择问候语。 character Syntax:牋?#CH Related:牋?#HOST #PW 从Charater atabase中返回当前角色的名字 colse Syntax:牋?#CL filenum Related:牋?#FILE 根据给定的文件号关闭文件,文件必须是已经用#file命令打开的。 实例: #CLOSE 1 关闭一号文件 clr 清除屏幕。如果要清空scrollback buffer并收回内存,请使用菜单命令Empty。 color Syntax:牋?#CO attribute [pattern] Related:牋?#HIGHLIGHT 如果省略pattern参数,这个命令将改变最后一行的颜色。颜色属性见下表。如果包括 pattern参数,将建立一个颜色触发,引起触发的条件除了字符对应外还需要有相同的 颜色。 Color values: black牋? 0 blue牋 1 green 2 cyan 3 red 4 magenta 5 brown 6 gray 7 tellow 14 white 15 bold 128 要显示亮色,在基本值上加8,作为背景颜色,需要用基本值乘16。例如:使用红色背 景的值是4*16或64。在前景上使用粗体字,需要再加128。这样,在蓝色背景上的粗体 白字的值是:128+1*16+15=159。 实例: #CO red 将最后一行的颜色变成红色 #CO bold,red 将最后一行变成红色粗体 connect Syntax:牋?#CON Related:牋?#DISCONNECT 断开并重新连接到当前的MUD,与菜单命令File/Reconnect 相同 cr Syntax:牋?#CR 送一个空行到MUD cw Syntax:牋?#CW color Related:牋?#COLOR 在一次成功的触发之后,改变引起触发的内容的颜色 实例: #TRIGGER {告诉你} {#CW red} 当有人tell 你时,显示较为醒目的颜色 dde Syntax:牋?#DDE server topic macro 这个命令允许你通过动态数据交换使用外部程序。zMUD也有一些内建的函数用于DDE: %dde(server,topic,item) %ddepoke(server,topic,item,value) %ddemacro(server,topic,macro) 如果你使用%ddeopen(server,topic)函数打开DDE连接,在其他函数中不再需要指明 server和topic,这个函数是全局性的,对于zMUD的任何窗口均有效。结束DDE连接 时,使用%ddeclose()函数。 zMUD也拥有自己的DDE服务,server名是zmud,topic也是zmud,item为data。 实例: #DDE NETSCAPE WWW_OpenURL {<a target="_blank" href="http://www.zg169.net/~czmud/index.html}">http://www.zg169.net/~czmud/index.html}</a> 使用netscape打开zMUD从入门到精通主页,因为~zMUD的特殊字符,所以需要再加一个 ~写成~。 #DDE ZMUD ZMUD {chat* bye;quit} 使用DDE向MUD发出命令 %dde(Excel,TEST.XLS,R1C1) 使用excel装入test.xls并返回单元R1C1的值。 %ddepoke(Excel,TEST.XLS,R1C1,@tank) 向test.xls的R1C1单元写入变量@tank的值 谁能用DDE写一个自动对诗的机器人? default Syntax:牋?#DE [special-char-string] Related:牋?#NODEF 保存你当前使用的特殊字符并恢复系统默认的特殊字符,在使用现成的命令脚本时, 这个命令可以保证脚本中的标准特殊字符被正确识别。使用#NODEF命令将恢复你自定 义的特殊字符。 zMUD中使用的特殊字符有 1 Command Char # 将紧随的字串解释为命令 2 Separator Char ; 分隔多个命令 3 Variable Char @ 用于扩展变量的值 4 History Char ! 调用命令缓冲区中的命令 5 Parameter Char % 指出系统变量和函数 6 Movement Char . 调用路径变量或函数 7 Focus Char : 向指定窗口发命令 8 Quote Char ~ 紧随其后的特殊字符当作普通字符 理 9 Must be a space at the end *? *fool 实例: #DEF 保存你当前使用的特殊字符并恢复系统默认的特殊字符 #DEF {xx$xxxxx } 保存你当前使用的特殊字符并回复默认的特殊字符,然后将@改为$。 disconnect Syntax:牋?#DI Related:牋?#CONNECT 断开当前的连接 实例: #TRIGGER {你已陷入半昏迷状态} {#DI} 断线就不会被杀死吗?我没试过,hehe。 ECHO Syntax:牋?#EC string Related:牋?#SAY 在当前窗口中显示字串,类似与say命令。除了用于离线测试trigger似乎没有别的用 处。 实例: ERASE Syntax:牋?#ERA filenum Related:牋?#FILE 从硬盘中删除用#file打开的文件 实例: #FILE 1 old.log #ERA 1 删除old.log文件,需要先用#file命令打开。 EXEC Syntax:牋?#EXEC command 执行一个命令,命令中可以包括变量 实例: #TRIGGER {^咖啡告诉你(*)} {#EXEC %1} 执行咖啡的指令。(我可没那麽傻) FILE Syntax:牋?#FI number name Related:牋?#READ #WRITE 打开文件准备读写。zMUD可以打开10个文件,文件号1~5打开文本文件,能够按顺序 读或追加,文件号6~10打开记录文件用于随机读写。如果nuber已经用于打开的文 件,则前一个文件将被关闭。打开的文件只能位于zmud.exe所在的目录且不能是 EXE,HLP和MUD文件。 实例: #FILE 1 test.txt 打开text.txt作为文件1。 FIND Syntax:牋?#FIN 找出在当前地图上的定位,通过look命令用当前房间的描述比较地图数据定位匹配的 房间,与automapper的菜单命令find作用相同。 FORALL Syntax:#FO list command 逐条列出字串列表内容并执行命令。列表使用|分隔,逐个赋值给变量%i,并执行命 令。 实例: list=sys|ups|yahoo #froall @list {kill %i} 我一定是疯了。 FREEZE Syntax:牋?#FR [value] 切分屏幕查看以前的显示,value=0表示恢复屏幕。这条命令相当于Ctrl-z或单击右边 的滚动条。(所以没什么用) GAG Syntax:牋?#GA [pattern] Related:牋?#UNGAG 如果pattern省略,命令将从屏幕上删除最后一行。如果包括pattern,将删除所有匹 配行,相当于#ACTION pattern '#GAG'。 实例: #ga 咖啡 这叫眼不见为净。 HELP Syntax:牋?#HE [command] 不带参数相当与从菜单中选择help,否则显示指定命令的参数。 H+ Syntax:牋?#H+ Related:牋?#H- 从命令缓冲区中取得下一条命令,只在使用过#h-命令后有效,相当于向下的箭头键。 H- Syntax:牋?#H- Related:牋?#H+ 从命令缓冲区中取得上一条命令,相当于向上的箭头键。 HISTORY Syntax:牋?#HIS 显示命令缓冲区中的命令,每条显示的命令都带有行号,可以用!加行号来执行某条命 令。!!执行最新的命令。!+字母将执行最近一个以!后字母开头的命令。命令缓冲区 的大小默认为20,可由参数对话框改变。 你也可以用左键单击命令输入行左边的三角以弹出交互命令缓冲区对话框来选择命 令,单击将命令送至命令输入行以供编辑,双击将命令直接送往MUD。 <tab>键可以配合命令缓冲区的使用,如果你用!加数字或字母,再按下<tab>键,命令 将拷入命令输入行以供编辑。 实例: #HI 显示最后20条命令 !! 执行最后一条命令 !3 执行命令缓冲区中的最后一条命令 !k 执行最后一条以k开头的命令 !k<TAB> 将最后一条以k开头的命令拷入命令输入行以供编辑 HIGHLIGHT Syntax:牋?#HI [pattern] Related:牋?#COLOR 如果省略pattern,最后一行文本将以高亮显示,如果包括pattern,匹配的文本将以 高亮显示。相当于命令#ACTION pattern '#HIGHLIGHT'。 HOST Syntax:牋?#HO Related:牋?#CHAR #PW 返回当前连接的主机名 IF Syntax:牋?#IF expression true-command [false-command] 执行条件分支,如果表达式为真,执行true-command,否则执行falise-command(可 选)。表达式中可以包含变量和运算子。 实例: #if (@qn>30) {learn_skills} 在战斗中如果潜能达到了30,执行别名learn_skills返回师父处学习。 #if (@hp>10) {exercise @hp} {exert recover} 如果气大于10就修炼内功,否则补气。 #IF (@line =~ "You receive (%d) coins") {split %1} 如果变量@line与pattern "You receive (%d) coins"匹配,执行{split %1},判断匹 配需要使用“=~”。 IGNORE Syntax:牋?#IG Related:牋?#T+ #T- 打开或关闭所有触发,第一次执行#ig 关闭所有触发,第二次执行恢复正常。 INPUT Syntax:牋?#IN string 将文本放入命令输入行,替换当前内容 实例: #in get @item 扩展变量item后将命令置入命令输入行 KEY Syntax:牋?#KE key command 定义按键执行的命令,key值需注明按键的全名,例如:F1,CTRL-A 或 ALT-F2 实例: #key F1 eat baozi 定义F1键执行eat baozi 命令 <ALT-D>={drink jiudai} 定义 ALT-D 键执行 drink jiudai 命令 KILLALL Syntax:牋?#KILLALL 删除所有的别名、宏、触发、<tab>缩写 LMAP Syntax:牋?#LM path command Related:牋?#LOOP 穿越指定的路径并在每个房间执行指定的命令,变量%i将记录房间数 实例: #LMAP 3sn {#SHOW %roomname(%i)} 从当前的地图定位向南走三步,向北走一步,并显示每个房间的名称 LOAD Syntax:牋?#LOA filename Related:牋?#SAVE 装入指定的设置文件,filename中可以使用变量。注意:装入新的设置文件时,原来 的设置文件中的改变不会被保存 实例: #load dc 装入设置文件dc.mud。(.mud是默认的扩展名) <F1>={#load combat};<F2>={#load cocial} 为战争与和平定制的设置文件分别用F1和F2载入 LOOK Syntax:牋?#LOOK 执行MUD的look命令并重新写入地图的房间数据 LOOP Syntax:牋?#LOO range command 重复执行由range指定数量的命令,range包括最小值和最大值,中间用逗号分隔,如 果range中只有一个数字,默认的最小值是1,循环的次数记录在变量%i中,可在命令 中调用。 实例: #LOO 3 north 向MUD中送入north命令3次 #LOO 3,4 {get all from corpse %i} 取出第三和第四具尸体中的所有东西 #LOO @num {eat baozi} 吃包子@num口 LOG Syntax:牋?#LO [filename] 开始在给定的文件中记录从MUD中获得的文本,如果文件不存在,则建立文件并开始记 录,如果文件已存在,则打开存在的文件并追加记录。省略参数用于开关记录 实例: #LO test.txt 开始将MUD的所有输出记入test.txt #LO 开关记录,如果正在记录,该命令将停止记录,否则开始记录 MAP Syntax:牋?#MAP direction Related:牋?#PATH 在当前路径上增加一个方向 #MAP north 如果当前路径是.s,则更新为.sn,同时向北移动一步 MATH Syntax:牋?#MAT variable expression Related:牋?#ADD 将表达式的结果赋值给变量。表达式中可以包括数字、逻辑运算和字符串函数,表达 式中包含的变量将被扩展。 实例: #MATH test (1+3)*4 将计算结果16赋值给变量test #MATH test2 @test-4 如果@test的值是16,则变量test2将被赋值12 #ALIAS add {#MATH value %1+%2} add 3 4 执行后变量value的值为7 MARK Syntax:牋?#MA Related:牋?#PATH 开始记录新的路径,正在记录的路径将被废弃 MEDIA Syntax:牋?#ME function Related:牋?#PLAY 向当前的多媒体设备发送命令,通常在#play之后使用,function中可以使用变量,可 用的function依设备不同而不同值,一般有: back 返回一步 close 关闭当前文件 eject 放弃当前设备 next 播放下一曲目 pause 暂停 paly
⑹ 批处理 del 路径怎么用通配符
del 路径中文件夹名不能使用通配符,只能对文件名有效。你可以通过以下方式来达到删除效果 for /f "delims=" %%a in ('dir /ad /b C:\cygwin\home\Administrator\WORKING_*') do (del /s /q %%a\system\app\PicoTts.apk)
⑺ 通配符是怎么定义的有哪些
通配符的使用 在使用文件时,主文件名和扩展名中还可以使用通配符“*”“?”。其中“*”代表从它所在位置直到“.”(主文件名中为到“.”前,扩展名为“.”后)的所有字符;“?”代表它所在位置的任意字符。 实例: A.?? 表示文件主名为A,扩展名不超过两个字符的文件 ???.com 表示文件名不超过三个字符,扩展名为COM的文件 *.* 表示所有文件 ABC.* 表示文件名为ABC,具有任意扩展名的文件 *.EXE 表示以EXE为扩展名的所有文件 A*.* 表示以字符A开头的所有文件 例如: ABC.txt ABD.com等 A??.* 表示文件主名以A开头且不超过三个字符,具有任意扩展名 的文件 tabs) %x 匹配任何数量的非空格 [range] 匹配任何数量的在[range]中列出的字符 ^ 强制从一行的开始进行匹配 $ 强制匹配到一行的结束 (pattern) 保存匹配的式样到参数%1~%9 ~ 包括其中的字符不会被解释为特殊字符 {val1|val2|val3|…} 匹配其中列出的任何特殊的串 {^string} 不匹配其中包括的串 使用[range]时,你可以在其中列出需要的字符例如 [abc] 或使用范围 [a-c] 。 为了匹配特殊字符本身,可以使用~将特殊字符括住,例如:~[test~] 将匹配字符串 [test] 而不是作为 [range] 来匹配。 只使用$可以匹配一个空行。 别名中使用参数的例子 我们在解谜过程中向npc提出的问题通常是以: ask npc about here ask npc about rumors ask npc about name 这样三个命令开始的,把他们定义成别名可以节省一些时间,像这样: #al askn {ask %1 about here;ask %1 about here;ask %1 about name} 可如果npc的名字有两个单词,或一堆同名的npc中你要问其中第二个,就需要把别名 中的参数改为%-1,此时执行askn bing 2或askn tian bing就不会出错了。 为了更好的理解参数的作用,试试执行下面的命令: #al tt test1 %1 test2 %2 test3 %-1 test4 %-2 看看执行{tt a1 a2 a3 a4 a5}的结果,一切都清楚了吧? 表达式 当执行运算时,如果所有参数均为数字,则执行数学运算,否则执行字符串操作。以 下是一些常用的表达式(v1和v2代表变量或另外的表达式): v1+v2 如果v1或v2不是数字,则执行字符串相加 v1-v2 从v1中减去v2 v1*v2 相乘 v1/v2 v1除v2,结果不含小数 v1\v2 取模 v1&v2 逻辑运算and v1 and v2 同上 v1 | v2 逻辑运算or v1 or v2 同上 v1 xor v2 逻辑运算xor v1 = v2 如果v1等于v2返回真 v1 > v2 如果v1大于v2返回真 v1 < v2 如果v1小于v2返回真 v1 >= v2 如果v1大于等于v2返回真 v1 <= v2 如果v1小于等于v2返回真 v1 <> v2 如果v1不等于v2返回真 v1 != v2 同上 v1 =~ v2 如果表达式v1中的pattern包含v2,返回真 v1 ~= v2 同上 -v1 返回v1的负值 !v1 逻辑运算非 命令: number] Syntax:牋?#number command 这个命令向MUD重复发送number次命令,number必须是一个常数,如果要使用变量,请 使用loop命令。当前已经重复的计数保存在系统变量%repeatnum中。 实例: #4 fight bing %i 命令将被解释成{fight bing 1;fight bing 2;…;fight bing 4}发往MUD10 abort Syntax:牋?#AB 停止分析处理当前的命令行中#ab以后的部分 实例: get all corpse;#ABORT;split 在这个例子中,split将被忽略 action Syntax:牋?#AC pattern command [classname] Related:牋?#TRIGGER #T+ #T- #IGNORE 这是zMUD中最有用的特性之一。当从MUD中收到一条匹配的文本时,预先定义的命令将 被执行。这条命令的第一个参数是被匹配的文本,如果文本中包含空格,你需要将它 用括号{}括起来。pattern中能够包含特殊的pattern matching symbols 和通配符。 第二个参数是将要被执行的命令,超过一个单词的命令也需要使用括号{}。第三个参 数用于给不同的触发动作命名分类,便于管理。高级的触发设置必须使用参数 (Preferences)对话框,在对话框中,你可以决定触发的动作是紧跟在匹配的文本之 后还是在新的一行中执行。 一个简单的例子: #AC {你买下一件藤甲} {wear jia} 这样,无论何时只要你买了藤甲,立刻可以自动穿上。 自动登录的例子: #AC {^您的英文名字:} {river} #AC {^请输入相应密码:} {12345} 然后在参数对话框中关闭 Trigger on Newline 设置并且打开 Trigger on Prompt 这 样名字和密码将紧接着提示行输入而不会等待换行。注意,字符 ^ 将强制从一行的头 部开始匹配。 触发中的参数 #AC {^You get (%d) coins} {chat I get %1coin } rich 当你看到一行“You get [number] coins”时,其中的数值将被存放在变量%1中,其 后执行的命令可以使用这个数值。在这个例子中用到了类(class)名rich,这样你就 能够使用t+和t-命令来打开或关闭这个触发。 add Syntax:牋?#AD variable amount 这个例子允许你做一个简单的算术计算。amount可以是数值或变量。如果要做减法, 可以使用负值。复杂一些的算术计算,请使用 #math 命令。 实例: #AD moves 1 给变量@moves加一 #ACTION {You get (%d) coins} {#AD gold %1} 当捡到钱时,把捡钱的数量加到 @gold 变量中 alarm Syntax:牋?#ALA timepattern command Related:牋?#TRIGGER 建立一个基于时间的触发,而不是根据从MUD中获得的信息触发。timepattern可以是 特定的时间或包括通配符。如果在minus前加上(-),则表示连线时间而不是实际时 间。 timepattern 的格式表示成 hours:minutes:seconds ,其中的小时和分钟是可选项, 如果不指明,则假定小时和分钟被通配符*取代。通配符*可以代替任何数值,而*10可 以匹配10、20、30等等。你也可以指定几个数值用(|)来分隔。Finally, you can put parenthesis around the wildcards to save the values matched to the %1..%9 parameters。(这句话我不懂,谁来帮我?) 实例: #ALARM -30:00 {save} 这里的 hour 没有指定,所以默认为*。 因此,这个例子将在连线后每隔30分钟执行 save 命令。 #ALARM 3:00:00 {gossip Why arent you sleeping?} 命令将在凌晨3点触发。 #ALARM -59:(55|56|57|58|59) {#SHOW 60-%1} 这个命令在你连线时每个小时的最后5秒在屏幕上显示 5 4 3 2 1。 alias Syntax:牋?#AL [aliasname] [string] Related:牋?#VARIABLE 保存一个或一组命令到一个较短的别名中。当执行别名时,命令中的变量能够被扩 展。如果需要延迟变量扩展,可以使用两个变量标志(%%)。 如果不带参数执行命令alias,所有的别名将被列出在输出窗口。如果在命令alias中 指定别名,被指定的别名将被显示。 别名能够用<tab>键扩展。在命令行中键入一个别名并按下<tab>键,命令行中的别名 将被替换成别名中包含的命令。 如果在定义别名时使用参数(%1,%2,…),在命令行中紧随别名的文本将取代这些 参数。特殊的参数%-1到%-99表示-n之后的所有文本。(使用参数的例子) 实例 #AL fs {fill waterskin} 当执行fs时,fill waterskin将被送往MUD。 #AL fs {fill @container} 在别名中使用变量,变量可以在购买容器时用触发赋值。 #AL make {#ALIAS %1 {cast %1 %%1] 在这个例子中,执行make heal将发出#ALIAS heal {cast heal %1}命令,这样就建立 了一个新的别名heal。 all Syntax:牋?#ALL command 发送一个命令到所有角色的窗口 实例: #ALL quit 发送 quit 命令到所有激活的角色窗口。 backup Syntax:牋?#BA Related:牋?#PATH #RETRACE 从当前正在记录的路径中删除最后一步 实例: 如果当前路径是 .nsew 那麽执行 #BA 将使其成为 .nse 。如果当前路径是 .n4s 则 执行 #BA 后将成为 .n3s 。? beep Syntax:牋?#BEEP [value] Related:牋?#PLAY 在pc机喇叭中发声,value 对应相应的 windows 事件。 实例: #BEEP 16 播放windows 事件 16 的声音。 #BEEP;#WAIT 500;#BEEP beep两次,中间间隔0.5秒。 button Syntax:牋?#BU number 触发一个自定义按钮,编号(从1至16)决定触发的按钮。number 可以是一个变量。 实例: #BU 1 触发第一个按钮,效果相当于在屏幕上按下这个按钮 c+ Syntax:牋?#C+ [name] Related:牋?#C- 开始获取文本到窗口name中,如果省略name,文本将送入command editor,(如果 editor中的capturing设置可用)。如果在preferences对话框中选中Capture Commands设置,键入的命令也将被送往这个窗口。 例子: #c+ temp 开始拷贝所有从MUD中获得的文本到名为temp的窗口中 c- Syntax:牋?#C- Related:牋?#C+ 停止获取文本到另一个窗口 capture Syntax:牋?#CAP [number] [name] Related:牋?Editor window 获取最后number行送到另一个窗口。如果省略number,则只获取最后一行。如果 number是-1,所有的行将被拷贝。如果name省略,发送的目标将是command editor window。 例子 #tr {咖啡告诉你:救命!} {#cap tell} 将tell的内容存入名为tell的窗口,避免忽略。 case Syntax:牋?#CA index command1 [commandn] 允许从命令列表中选择一个命令执行。index参数决定执行哪一个命令。如果index大 于列表中的命令数,将从第一个开始重新选择。例如,列表中有4个命令,而index= 6,则第二个命令将被执行。你也可以用变量%random随机的选择需执行的命令。 实例: #CASE 2 {first command} {second command} {third command} 执行第二个命令 #CASE @joincmd {join} {rescue} 如果变量@join是奇数,执行join,偶数执行rescue。 #CASE %random {Hello} {Hi there} {Hiya} {Hi} 随机选择问候语。 character Syntax:牋?#CH Related:牋?#HOST #PW 从Charater atabase中返回当前角色的名字 colse Syntax:牋?#CL filenum Related:牋?#FILE 根据给定的文件号关闭文件,文件必须是已经用#file命令打开的。 实例: #CLOSE 1 关闭一号文件 clr 清除屏幕。如果要清空scrollback buffer并收回内存,请使用菜单命令Empty。 color Syntax:牋?#CO attribute [pattern] Related:牋?#HIGHLIGHT 如果省略pattern参数,这个命令将改变最后一行的颜色。颜色属性见下表。如果包括 pattern参数,将建立一个颜色触发,引起触发的条件除了字符对应外还需要有相同的 颜色。 Color values: black牋? 0 blue牋 1 green 2 cyan 3 red 4 magenta 5 brown 6 gray 7 tellow 14 white 15 bold 128 要显示亮色,在基本值上加8,作为背景颜色,需要用基本值乘16。例如:使用红色背 景的值是4*16或64。在前景上使用粗体字,需要再加128。这样,在蓝色背景上的粗体 白字的值是:128+1*16+15=159。 实例: #CO red 将最后一行的颜色变成红色 #CO bold,red 将最后一行变成红色粗体 connect Syntax:牋?#CON Related:牋?#DISCONNECT 断开并重新连接到当前的MUD,与菜单命令File/Reconnect 相同 cr Syntax:牋?#CR 送一个空行到MUD cw Syntax:牋?#CW color Related:牋?#COLOR 在一次成功的触发之后,改变引起触发的内容的颜色 实例: #TRIGGER {告诉你} {#CW red} 当有人tell 你时,显示较为醒目的颜色 dde Syntax:牋?#DDE server topic macro 这个命令允许你通过动态数据交换使用外部程序。zMUD也有一些内建的函数用于DDE: %dde(server,topic,item) %ddepoke(server,topic,item,value) %ddemacro(server,topic,macro) 如果你使用%ddeopen(server,topic)函数打开DDE连接,在其他函数中不再需要指明 server和topic,这个函数是全局性的,对于zMUD的任何窗口均有效。结束DDE连接 时,使用%ddeclose()函数。 zMUD也拥有自己的DDE服务,server名是zmud,topic也是zmud,item为data。 实例: #DDE NETSCAPE WWW_OpenURL {<a target="_blank" href="http://www.zg169.net/~czmud/index.html}">http://www.zg169.net/~czmud/index.html}</a> 使用netscape打开zMUD从入门到精通主页,因为~zMUD的特殊字符,所以需要再加一个 ~写成~。 #DDE ZMUD ZMUD {chat* bye;quit} 使用DDE向MUD发出命令 %dde(Excel,TEST.XLS,R1C1) 使用excel装入test.xls并返回单元R1C1的值。 %ddepoke(Excel,TEST.XLS,R1C1,@tank) 向test.xls的R1C1单元写入变量@tank的值 谁能用DDE写一个自动对诗的机器人? default Syntax:牋?#DE [special-char-string] Related:牋?#NODEF 保存你当前使用的特殊字符并恢复系统默认的特殊字符,在使用现成的命令脚本时, 这个命令可以保证脚本中的标准特殊字符被正确识别。使用#NODEF命令将恢复你自定 义的特殊字符。 zMUD中使用的特殊字符有
⑻ 关于路径通配符
FOR /F "eol=; tokens=* " %i in ('dir/b/ad') do @dir/b %i\*.txt 这样就可以列出你要的文件了。FOR /F "eol=; tokens=* " %i in ('dir/b/ad') do @dir/b %i\*.txt >> files.txt 这样就会把找到的文件名写入到一个叫files.txt的文件中优化了一下,这个可以显示完整路径的,你开DOS窗口,输入以下试下 FOR /F "eol=; tokens=* " %i in ('dir/b/ad') do @cmd/c for /f "eol=; tokens=*" %j in ('@dir/b %i\*.txt') do @echo %i\%j全部是一行
⑼ bat脚本路径中间用什么通配符表示所有的文件夹
rem如果你的“另类噶的离开”这几个文件夹是固定的话,建议这样rem最大的好处是万一哪天一个疏忽吧文件夹也放到G:下也不会出问题rem实际运行时把x前的echo删除@echoofffor%%iin(另类噶的离开)do(for/f%%jin('dir/b/ad/odg:\%%i2017*')dosetdn=%%~jechoxg:\%%i\%dn%f:\/d/s/e/y)pause
未经允许不得转载:山九号 » 文件路径通配符|bat脚本路径中间用什么通配符表示所有的文件夹