- ·上一篇文章:比较经典的小程序 批处理朋友录
- ·下一篇文章:wbat教程第二部分:设置--为你自己的wbat程序做好准备
- ·百度中搜索更多的关于“wbat教程第一部分:漫游wbat--关于wbat所有功能的信息”相关内容
- ·谷歌中搜索更多的关于“wbat教程第一部分:漫游wbat--关于wbat所有功能的信息”相关内容
- ******申明******
- 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
- 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
- 如果能将出错部分反馈给我,那就更好了。
wbat教程第一部分:漫游wbat--关于wbat所有功能的信息
所有资料及WBAT工具可以在本站下载 地址:http://cmdos.net/soft/sort017/down-613.html
<快速对话框>
让我们从一个最简单的例子学起:
wbat box ok
这是一个暂停按钮, 提示用户继续。在默认状况下,所有的对话框都被放置在
屏幕中央。你是不是想改变它的位置呢?行和列可以自左上角处指定。比如你可以
这样:
wbat box 20,30 ok
也许你会担心越界,如“wbat box 2000,3000 ok”,但我告诉你大可不必担心
,因为wbat会自动调整。
我们还可以指定多个选项,如:
wbat box 20,30 ok,cancel
但选项之间必须用逗号分割,言外之意选项名称中可以有空格,如:
“wbat box 20,30 ok,can cel”。
如何让我们的选择有意义呢?看例子:
wbat box ok,cancel
if errorlevel 2 goto cancel
if errorlevel 1 goto ok
… …
明白了吧!这里用到了返回码,1代表第一个选项被选中,2代表第二个选项被
选中以此类推。要注意一点,“if errorlevel n” 表示如果返回码大于等于n,因
此这类有关返回码的if语句一定要降序排列。
还可以加一些提示信息,看例子:
wbat box 20,30 "Continue?" ok,cancel
即提示信息要置于双引号中,并放在选项的前面。
我们还可以改变颜色,看例子:
wbat box 20,30 (blue on +brown) "Continue?" ok,cancel
颜色信息在括号中,这里的“blue”代表字的颜色是蓝色,而“+brown”代表
背景的颜色是亮棕色(+代表亮)。默认的颜色信息储存在wbat.ini中。
好了,学到这里,究竟为什么叫“快速对话框”呢?这是因为没有用到“布局
”(关于“布局”后文有详述),所有控件都是直接在命令中输入的。
以上就是关于快速对话框的一些内容,是不是觉得很有意思?是的话就接着看
吧。
<对话框的布局>
如果你想要比仅仅是几个按钮更多的功能,那么你需要一个可以自由安排文本
和控件的布局。
控件有:按钮、菜单、输入框、复选框、单选框。在布局中,所有的控件都要
用方括弧“[]”标记。
看一个例子:
假设当前文件夹下有一个名字为hero.txt的文本文档,其中有一段内容如下:
:hero [x]
Please enter your name and city
Name:[$ myname,40]
City:[$ mycity ]
[.] male [.] female
[!] over 18
[ok] [cancel]
:
在程序文件(即你要运行的bat文件)中有如下:
wbat box @hero.txt:hero
让我来解释一下:
在你的wbat命令中,你可以用文件名和标签来指定一个布局,即指出这个布局所在
的位置(这里所谓的“布局”其实就相当于一段代码,这段代码中放置了一些控件
)。文件名用“@”符号作为前导,标签名用“:”作为前导。例如这里的“hero.txt:hero”表示该布局在当前目录下文件“hero.txt”中的“hero”标签
下。
再来看看hero.txt中的内容。“:hero”标记了该布局的起始;最后一行的“:
”标记该布局的终止;输入框一般形式是“[$]”;“[.]”表示单选框;“[!]”
表示复选框;“[]”代表按钮。我再简单说说“[$ myname,40]”的意思,
“myname”是输入框中字符串所返回的变量名,即输入框中的字符串是用变量
myname接收的;40是指该输入框的大小为40,即可接收40个字符。标签行中的“[x]”和windows窗口右上角的叉功能一样,都是退出对话框。
<按钮控件>
在此之前我们已经初窥了按钮控件的模样,按钮的名称被置于方括号“[]”中
。例如:[ ok ][ cancel ]
注意:按钮的名称不能以“$”、“.”、“!”这些符号开头,因为这些符号
标识了其它的控件。
“?”标识了哪个按钮是退出键(然而问号并不会显示出来)。例如:[ ok ][
?cancel ]。在这个例子中如果你选择了cancel键,那么系统将执行退出操作。本
例中cancel的返回码不再是2而是100(这一点,与其余的退出操作都一样。),这
是因为它执行的是一个退出操作。
<菜单>
一、
一个菜单仅仅是一些按钮控件的罗列。但如果你想使用菜单的风格而不是简简单单的按钮,那么你要把“wbat box”替换成“wbat menu”。例如:wbat menu @hero.txt:hero 。
我们来看一个例子,以下代码是当前文件夹hero.txt文件中的一段:
:hero [x]
[section1]
[section2]
[section3]
:
其中“[x]”代表了退出按钮。“section1”的返回码是1,“section2”的返
回码是2,……“[x]”的返回码是100。在用if语句判断返回码时请注意按降序排
列。
二、
除了返回码,选择按钮还可以以名字作为返回,并赋值给变量wbat。在默认情况下,只返回所选选项名称的第一个单词。一个简单的goto %wbat%将跳转到以选项名字命名的标签。看一个例子:
以下代码是当前文件夹hero.txt文件中的一段:
:hero [x]
[super hero]
[my hero]
[hero]
:
在运行的时候,我们这样写:
wbat menu @hero.txt:hero
goto %wbat%
:super
echo super hero
pause
exit
:my
echo my hero
pause
exit
:hero
echo hero
pause
exit
运行后,你会发现程序并没有正确执行,原因是语句“wbat menu…”必须用
“call w.bat menu…”替换后才会产生环境变量。也就是说,只要把上述代码中
的“wbat”换成“call w.bat”就行了。关于这一点,后文将会有详细论述。
<输入框>
输入框用符号“$”标记,并在$后面跟一个变量名,这个变量将返回输入的字
符串。比如:[$ city ] 。
输入字符串的长度限制由“[]”括号所包含的的空格数决定(也可以在变量后
跟一个数字来代表输入长度)。
也可定义附加的选择项:
U 强迫大写
P 密码输入模式
! 必须输入 (除非方格被 ESC 关闭)
例子: [$ name,40,U! ]
注意:只做一个(没有按钮的)输入栏也是可以的。在这种情况下,按回车键将关闭
对话框。
看一个例子,一下代码是当前文件夹hero.txt中的一段:
:hero [x]
input your password:[$ password,20,p!]
:
在执行文件中我们需要这样写:
@echo off
call w.bat box @hero.txt:hero
echo %password%
pause
因为要产生环境变量,所以我们得把“wbat”换成“call w.bat”。
<复选框>
复选框用于确定某个选项是否被选中(on/off)。要在对话框里创建一个复选
框,请在方括号里放置一个感叹号“!”。
例如:[!] over 18
注意:在键盘上用空格键触发复选框。复选框被触发为“ON”的标记可在WBAT.INI
定义(默认符号:“x”)。
在一个对话框里最多可以有 9 个复选框。 每个复选框的返回值均为 0 (off)
或 1 (on) , 并将第一个复选框返回给变量 WCB1,第二个返回给变量WCB2,依次
类推。
看一个例子,一下代码是当前文件夹hero.txt中的一段:
:hero "Checkbox" [x]
[!] over 18
[!] Do you know Hero?
[!] Do you play bridge?
[ ok ][? cancel ]
:
在执行文件中我们需要这样写:
@echo off
call w.bat box @hero.txt:hero
if %wcb1% equ 1 (echo over 18) else (echo below 18)
if %wcb2% equ 1 (echo Hero's friend) else (echo nobody)
if %wcb3% equ 1 (echo you know 3nt?) else (echo nothing)
pause
注意:在布局中与标签名同一行的双引号中的字符串将被识别为标题。
<单选框>
单选框用“[]”括号里加一个句点“[.]”表示。在提供的几个选择框中
,只有一个可以被选择,其他的自动关闭。对于单选框的提示文本,也可以
包括到[]括号里去。
例如: [. left aligned ]
注意: 在键盘上用空格键可将高亮的选项激活为“ON”。“ON”的符号可在
WBAT.INI 中定义。(默认值: "*")。
在一个对话框中你可以定义2~ 9 个单选框。当一个单选按钮被选择时,将返回单选按钮的号码 (1,2,3,……),并赋于变量WRB。
看一个例子,一下代码是当前文件夹hero.txt中的一段:
:hero
[.]male
[.]female
[ ok ]
:
在执行文件中我们需要这样写:
@echo off
call w.bat box @hero.txt:hero
if %wrb% equ 1 echo you are a man.
if %wrb% equ 2 echo you are a woman.
pause
<列表框>
一个列表看起来像一个菜单, 但它们有一些重要的不同:
* 在布局中列表不需要用方括号“[]”来标识。 (而是整行被使用)
* 利用滚动条,最多可以显示32kb的内容。
一般的命令格式是:wbat list @hero.txt[:hero]。如果标签被省略,
那么将会取整个文本的内容。
我们还是看一个例子,这一个例子列出当前目录的文件。我们可以从中
提取一个文件名。
DIR *.* /b/a-d/one > %temp%\temp.txt
call W.BAT list @%temp%\temp.txt
wbat box "Your selection was:^** %wbat% **" OK
del %temp%\temp.txt
在这里“^”符号表示换行。列表框所选择的内容是用变量%wbat%返回的。
(卷动: 使用光标键(上/下)或将鼠标指针移到顶端或底端的滚动钮上并单
击或按住鼠标左键。)
你也可以使用 WBAT LIST 来查看较小的文本文档。(注意:最大的文件大小是 32 Kb ,而且最大行宽是 76bytes ,超长的部分将被删除。)
下面这个例子显示当前目录中WBAT.INI文档的内容。
命令: wbat list @WBAT.INI
<显示文本>
一、为什么要用“WBAT text”?
在屏幕上显示文本你可以用“TYPE”或“ECHO”,但是“WBAT text”
指令提供一些额外的功能:
* 可在屏幕上的任何位置输出
* 本文通过标签在布局文件中读出(就象对话框一样)
* 如果本文中有变量的话,则该变量将被其值代替。
* 可以设置颜色,改变题目和属性。
(默认情况下,文本将以当前的颜色显示在屏幕上。)
二、一般格式
WBAT从给定的布局文件中通过标签来读取文本的内容。如果没有指定标
签,那么将读出整篇文本文档。但是,只有一个屏幕的文本会被显示,多余
的将不能显示,没有滚动条。例如:
@echo off
wbat box Continue
WBAT text @hero.txt
pause
跟通常一样,左上角的位置被定义为矩形框的位置。默认值是 1,1。如
果文本框超过右下角的边缘,位置将会被调整以适合大小。超过屏幕大小的
本文将不能显示。同时我们还可以更改颜色。要实现这样的一个本文显示,
可以用如下的命令格式:
@echo off
wbat box Continue
wbat text 8,16 (blue on light brown) @hero.txt
pause
三、特殊颜色标记
你能在布局中使用两种特殊的颜色来标记行或段落(这些颜色在
WBAT.INI中定义)。
1、设置文本高亮
要使文本或段落高亮,可在文本或段落的开始及结束处分别插入“~”符号
。(“~”可以通过对INI文件的[general]段修改HiSymbol来改变)
2、文本标题
所有资料及WBAT工具可以在本站下载 地址:http://cmdos.net/soft/sort017/down-613.html
放在最左一列的“#”符号标记了标题行(任何地方,不只在页的顶端)。标题
颜色的宽度是整个文本的宽度,由最长的行决定。
四、快速文本模式
关于对话框命令,有一种 "快速文本模式(Quick text)" 用于显示一条
简短的信息。这就让我们非常方便的使用指定的颜色来显示信息,看下面的
例子:
@echo off
wbat box OK
wbat text 11,30 (+white on red) " Hello world! "
pause>nul
<填充,清除>
你可以用任何字符或字符串填充一个矩形框,或者只是改变颜色。
用“FILL”命令你也可以达到清屏的目的:“wbat fill " "”这句起到了“wbat CLS”的效果(默认的颜色由WBAT.INI定义)。
语法格式: wbat FILL position (dimensions) (colors) "string" +s
下面解释一下这些参数:
position:左上角的行坐标和列坐标,默认是 1,1
dimensions:填充区域的宽和高(总是在括号中)。默认值: 屏幕边缘。
colors:颜色。默认值:屏幕颜色 (在WBAT.INI中)
string:每行中被重复的字符串。(如果字符串省略,那么只有颜色被改变
。)
+s:以后的每一行向左移动s个位置
注意:若填充区域超过屏幕边缘,将会被剪切。
看一个例子:
@echo off
wbat box ok
wbat fill 10,30 (9,9) (+cyan on blue) "123456789" +1
pause
输出的结果是每一行都比前一行向左移动了一位。
<移动光标>
如果你准备让你的屏幕在指定行输出其他命令运行的结果,你可以使用
光标命令。
举例来说,如果你将文本输出到屏幕上半部分,而后续的命令输出到屏幕的中部,你可以将光标设置到第13行(cmd窗口默认大小为25):
@echo off
wbat cursor 1
echo Hello!
wbat cursor 13
echo My name is Hero.
wbat cursor 24
echo Bye-bye.
pause
你也可以从任何指定的行开始发送移行命令给屏幕。
例如: wbat cursor 10+5
<屏幕保存和恢复>
WBAT boxes (box/menu/list) 总是突然弹出, 这意味着当对话框被关
闭后先前的背景将得以恢复。
有时你可能需要嵌套使用菜单和对话框,这时WBAT提供了一些额外的功
能。
一、
我们利用“FIX”前缀可使对话框固定, 也就是被关闭后仍保留在屏幕
上。这样你可以打开另一个对话框,而第一个对话框保持可见。(注意:固
定的对话框不能在屏幕上拖动。)
例如:
wbat FIX menu 9,9 @hero.txt:hero
wbat box OK
二、
WBAT save/restore 当它用于其他输出(如更多的对话框,查看文档等
)时,将保存屏幕。
“WBAT SAVE”用于复制屏幕映像到文件,并存放于%TEMP%目录里。
“WBAT RESTORE”用于恢复屏幕,并且删除临时文件。
如果使用超过一个文件,需要指定ID号。
看例子:
@echo off
wbat FIX box 9,9 @hero.txt:hero
wbat fix box ok
WBAT save
cls
pause
wbat restore
pause
<标准输出>
我们在以前的学习中知道,“Wbat TEXT”命令可以显示文本的内容,
那么我们需要“STDOUT”做什么?
答案是:“Wbat TEXT”不能重定向输出,而“STDOUT”可以。
那么为什么不用TYPE命令呢?
有两件事TYPE不能实现:
* 读取来自某个文件中标签下的小片断
* 代替环境变量
命令一般格式: wbat STDOUT @hero.txt[:hero]
如果标签省略,则读取整个文本。
如果要重定向输出,请用重定向符号“>”和“>>”。
<设置返回码>
命令“wbat el n”将返回码设置为n,这可能在测试的时候用到。
所有资料及WBAT工具可以在本站下载 地址:http://cmdos.net/soft/sort017/down-613.html
这项功能也可以用于测试wbat.com是否被解释程序找到。此时我们可以
设置一个不寻常的值并且测试它。如:
wbat el 219
if errorlevel 219 if not errorlevel 220 goto continue
echo wbat not found
goto exit
:continue
注意:在2000/xp中,%errorlevel%扩充到errorlevel的数字字符串,前提是不另存在一个以errorlevel为名的环境变量。

