当前位置:DOS资源站资料中心入门文章 → wbat教程第一部分:漫游wbat--关于wbat所有功能的信息

wbat教程第一部分:漫游wbat--关于wbat所有功能的信息

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2008-4-30 1:12:10

 所有资料及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为名的环境变量。