上次下载了wbat汉化版,但测试有很多问题,我重新检查并修正了这些问题,我自己亲自测试了很多次,没有问题了,上传与大家共享!
顺便问一下,那里有更多的中文DOS软件啊,如PQ MAGIC 8.05简体中文版的(不是6.0的),据说恒创启动盘内面有的,几乎全中文的dos工具!论坛里那位大侠(他的邮件:
ywzhuss@163.com)要别人跟帖200
http://www.cn-dos.net/forum/viewthread.php?tid=17444&fpage=1&highlight=%E6%B1%89%E5%8C%96&page=1啊 ,如果谁率先得到的话,也给我一个,感激不尽
电子邮件:
xiaoyun32767@126.com
哎呀,不能上传啊,请大家复制下面的内容,保持到一个命名为wbat.txt的记事本文件中,然后替换原英文版的wbat.txt即可,一下正文
:copyright
WBAT-版权所有,汉化:王小云,如有问题请联系软件作者:horst.schaeffer@gmx.net
:
:start
# WBAT 对话框工具 ^
WBAT 是一个在DOS中模拟 Windows 界面的对话框的一个批处理工具
。 当然 WBAT 也运行在纯 DOS 模式下工作。
概况:
+ 用“按钮(buttons),输入栏(input fields),菜单(menus),复选框(checkboxes),
单选框(radio buttons)”来布局对话框--所有的元件可以是自由地安排
+ “Quick Box”由于指令行的规格
+ “List box”用于选择在批处理中产生的选项
+ “Text”文本输出;“fill”填充屏幕区域,,清屏(clear),颜色(color)
+ 规定“字型(font)”和自定义颜色“调色板(palettes)”
+ “INI 文件(s)”用于默认值和偏爱设置
:
:main " WBAT- 在DOS下的对话框设计 "
关于所有的 WBAT 功能的资讯
--------------------------------------------------------------
为你自己的 WBAT 应用程序做好准备
--------------------------------------------------------------
布局设计对话框,菜单,本文
--------------------------------------------------------------
指令明细对于你的整批文件
--------------------------------------------------------------
批处理控制: 出错码(errorlevel) 和变量(variables)
--------------------------------------------------------------
使用者的鼠标和键盘
-------------------------------------------------
:
:tour-menu " WBAT 浏览 "
------------------
------------------
::
:tour-info
“WBAT Tour”将告知你所有的 WBAT 功能而不是很详细的研究。
在你开始前请注意下面的问题:
* 按“ESC”键或单击右上角的“”按钮(当可用时)将关闭当前对话框;
* 在当前对话框范围外单击鼠标右键也将关闭当前对话框(除非这一功能没有激活);
* 要w移动一个对话框,可在对话框的上部按住鼠标键拖曳它。
:Quick-box
# 快速简单对话框 ^
让我们从一个非常简单的命令开始学习:
wbat box OK
这是一个暂停的复位按钮, 提示用户继续。
在默认状况下,所有的对话框都放置在屏幕中央。
::
:Quick-pos
你也许希望可在屏幕的任何地方放置你的对话框。
对话框左上角的行、列坐标可以被定义:
wbat box 20,60 continue
如果对话框超出屏幕边缘,没关系,WBAT 会自动改正位置。
如果对话框碰巧遮住你要阅读的内容,你可用拖曳功能移开对话框。
::
:Quick-choice
# 快速选择对话框 ^
现在指定超过一个选项,而且有单一的选择:
wbat box 21,40 continue,back,tour menu
选项之间必须用“,”分开。在选项里容许用空格。
你可以使用热键进行选择 (默认是第一个字符,在这个DEMO里用红色标记). 关于热键
的更多信息请参阅“Layouts”。
在批处理文件中,处理用户的输入的方式与用“CHOICE”的一样,通过出错码
(errorlevel)(1 对应于第一个选项,2 对应于第二个选项经,等等)
例:
if errorlevel 3 goto TOUR-MENU
if errorlevel 2 goto T-quick
rem "continue" here
! 记住:在用 GOTO 测试出错码时必须降序排列errorlevels。
::
:Quick-prompt
# 提示文字和颜色 ^
一个可选的提示文字可以包含在双引号里,并放置于按钮选项的前面。
例子: wbat box 19,55 "Continue Tour?" ok,back
你甚至可以使用多行本文:只须在提示文本中插入一个脱字符号 (^) 作为分行标记。
提示框的颜色(box color) 可在圆刮号中被指定 (默认值颜色在 WBAT.INI 被定义)。
格式是:(提示文本颜色 on 提示框背景颜色)
例子: wbat box 19,55 (blue on light brown) "Continue Tour?" ok,back
关于彩色的语句和更多的对话框选项(选项的边框形式(item pre-set)及时间超出
(time-out)),请参见“main menu”中的“Commands”。
::
:box-layout
# 对话框布局 ^
如果你需要更多的功能,你就需要布局(layout)以便你能自由地安排本文和控件的位置:
* 按钮(buttons)或菜单项目(menu items)
* 输入区域(input fields)
* 复选框(checkboxes)
* 单选按钮(radio buttons)
在布局中,所有的控件被括起来。
见下一页的例子。
一般的命令格式是: WBAT box @layout.txt:label
所有对话框的命令选项是:
方格位置(box position),颜色(color),初始化选择条位置(initial bar position),
超时(time-out)。 见“Commands”(主菜单)。
::
:box-example
# 对话框布局例子 ^
这里举一个布局的例子。
注意:
对话框总是出现;
那意谓: 当对话框关闭时,
背景已经被保存下来。
然而, 一个特别的 " fix "
选项可用于关闭对话框后返
回屏幕。
::
:box-exm " 例子 "
请输入你的名字和城市 ^
名字:
城市:
男 女
超过 21
::
:box-lref
# 布局参考 ^
在一个文本文件(text file)里,你能有多个布局。每个布局单元都有标签(label)
识别, 像在批处理文件中一样。
一个布局单元的结束是在一行的开始用冒号(:),, 通常是下一个标签。
在你的 WBAT 命令中,你用文件名和标签来布局:
* 文件名前面用“@”标记 e.g. @dialog.txt
* 标签前用“:”标示 e.g. :START
例子: wbat BOX @dialog.txt:start
然而,在大多数情况下,你可以省略文件名,因为WBAT提供了一个简易的方法来使用
默认的文件。
另一个方法是在批处理文件中有布局,并且简单地用 “@%%0:label”
详情请参阅“Commands/Layout Reference”
::
:box-other
# 对话框布局 ^
其他布局功能:
* “变量(Variables)”可用于布局, 像在批处理文件中
* 可以定义对话框的标题 (用不同的颜色显示)
* 右上角的 是可选的,用于取消或退出
* 不同颜色的“分割线”(Divider lines)
详见“Layouts”部分
控件在下面的章节中也有描述。
:
:buttons
# 对话框布局中的按钮(bottons) ^
号中带有选项文字的按钮可放置于对话框中的任何位置。
例子:
用鼠标单击按钮或在高亮的按钮上按下“Enter”键,将关闭对话框,返回一个按钮的出
错码。可选的,通过变量来命名。
选项文本不能以 “$”或“!”开始,
因为这些符号被保留用于识别其他的控件。
特别的:“?”用于标识“ESC”按钮,与键盘上的“ESC”键有一样的功能,而问号不会显示。
例子:
在这情况下,“cancel”按钮返回的出错码不是“2”,而是100,就和其他的ESCAPE动作一样。
errorlevel 2, 但是 100,关于任何其他的逃亡行动。
详情请参阅“Control / ESC Handling”。
::
:button-menu
:
:buttons-menu
# Menu box ^
“菜单”只是垂直排列的按钮 ( 在一列或多列)。然而, 在一个对话框中按钮通常用
不同的颜色显示,灰色的是这个演示的按钮.(按钮颜色在 WBAT.INI 被定义)
如果你需要一个没有可见按钮(意为没有按钮背景,移到该位置时才亮显)的一个菜单
( 象下面的例子), 就要使用 “menu” 指令代替 “box”。 处理方法是相同的。
例: WBAT menu @layout.txt:label
你可以用详细的菜单选项来作一个大的对话框,或者用简单的关键字来做一个简单的对话框。
例子:(对于在这页上的画面)
~
:button-menu
:~
你可以插入空行,或添加文字。
另外,象标题、 框, 分割线
请参见主菜单中的“Layouts” 。
:
:buttons-errorlevel
# 根据 errorlevel 选择 按钮/项目 ^
在你的批处理文件中,你能通过返回的 errorlevel 来处理用户的选择,就如使用
“Choice” 命令一样(记住用降序排列检查 errorlevels!)
例子:
wbat menu :button-menu
if errorlevel 100 goto Main (捕捉 ESC/)
if errorlevel 3 goto B-variables
if errorlevel 2 goto B-errorlevel
rem here is errorlevel 1
:B-menu
注意:每个 errorlevel 值都有唯一的按钮对应,以防在你的布局里有
其他的控件。
关于详细的信息,包括 ESC 处理,请参见“Control”部分。
::
:buttons-variables
# 处理用户输入 ^
被选的按钮也能被以“名字”的方式返回值, 并分配给变量“WBAT”,默认值被赋给在菜单
选项中选的(第一个)字。
简单的 “GOTO%%WBAT%%” 可以跳转到用选项命名的标签行。
注意: WBAT 只产生环境变量...
这时用命令 call W.bat ......
来替代 WBAT......
这种特殊的结构在Windows NT/2000下运行的很好,在Windows版本下运行很安全
(只要DOS模式支持)
关于变量的更详细的信息请参见“Control”部分。
::
:input
# 对话框的输入栏 ^
输入栏用 “$”标记,并在$后面跟一个变量名,并将返回输入字串的字符串。
例子:
输入字符串的长度由括号所包含的的空间决定。
不同的长度 (更长或更短) 可以被指定,也可定义附加的选择项:
U 强迫大写
P 密码输入模式
! 必须输入 (除非方格被 ESC 关闭)
例子:
如果输入长度超过可见栏位大小,如果有需要的话字符串将会被替换。
注意:只做一个(没有按钮的)输入栏也是可以的。在这种情况下,按回车键将关闭对话框。
::
:input-var
# 输入变量 ^
为了处理输入,你必须告诉 WBAT 返回的变量, 使用下面的语句:
CALL W.BAT box ....
详情请见 Control 部分。
在对话框被显示之前,你可分配一个词首字母/默认值字符串给变量。如果你想要一个空的
输入栏,请确认清除变量 。
注意: WBAT 将会移除输入字符串后面冗余的空间。
::
:checkbox
# 布局里的复选框 ^
复选框用于触发选项的ON/OFF,要在对话框里创建一个复选框,在方括号里放置一个感叹号。
例子: ~ include subdirectories~
在这个例子里,只有复选框本身能被触发。要包括触发选项的关联文本,请将它包括
进号里面。
例子: ~~
注意:在键盘上用空格键触发复选框。
复选框被触发为“ON”的标记可在WBAT.INI定义(默认符号:“x”)。
:
:checkbox-example "Checkbox"
include subdirectories
all uper case
:
:checkbox-var
# 复选框变量 ^
在一个对话框里可以有 9 个复选框。 每个复选框的返回值均为 0 (off) 或 1 (on),
并将第一个分配给变量 WCB1,第二个分配个 WCB2,如此类推。
这是一个处理返回值变量的例子:
set option=
if %%WCB1%%==1 set option=/S
注意:在对话框被显示之前,初始/默认状态被指定给变量。一个空的变量或任何无效
的变量都将赋于 0 (OFF)
::
:radio
# 对话框布局中的单选框 ^
在提供的几个选择框中,但只有一个可以被选择,其他的自动关闭。
单选框用括号里加一个句点“”表示。
例子: LFN short DOS name
对于单选框的提示文本,也可以包括到括号里去。
例子:
注意: 在键盘上用空格键可将高亮的选项激活为“ON”。
“ON”的符号可在 WBAT.INI 中定义。(默认值: "*").
:
:radio-example "Radio Buttons"
::
:radio-var
# 单选框变量 ^
你可以定义一套多达 9 个单选按钮 (最小量是 2) 的单选框。当一个单选按钮被选择
时,将返回单选按钮的号码 (1...),并赋于变量“WRB” 。
这是处理单选框返回变量的例子:
set align=left
if %%WRB%%==2 set align=right
if %%WRB%%==3 set align=center
注意:在对话框被显示之前,初始/默认值能被指定给变量。一个空的或任何无效的变
量都将被赋于 1 (first)
::
:listbox
# 从列表中选择 ^
一个列表看起来像一个菜单, 但他们有一些重要的不同:
* 在布局中不须方括号。 (整行被使用)
* 用“卷动”功能可“达到 32Kb”被显示。
这意味着你可以很容易的在批处理过程中提出一个源文件,举例来说:
WBAT list @file.ext
你可以象任何对话框命令一样指定标签,但是如果你省略那标签,整个文件将被提出。
符号“@” (表示文件名字) 在LIST命令中并不是强制的。。
::
:list-example
# 列表例子 ^
这一个例子列出当前目录的文件。拾取一个文件......
卷动: 使用光标键(上/下)或将鼠标指针移到顶端或底端的滚动钮上并单击鼠
标左键。单击箭头用翻页。
下面是查看列表的命令:
DIR *.* /b/a-d/one > %temp%\temp.txt
call W.BAT list 3,60 %temp%\temp.txt
wbat box 8,53 "Your selection was:^** %%wbat%% **" again,continue
del %%temp%%\temp.txt
::
:list-keys
# 用键盘选择行 ^
你能使用键盘选择一个行就像在 Windows 浏览器中一样:
如果你键入一个或多个的字符,标记就会跳到下一个(你键入)的这些字符或字符串处
开始。如果在下面的列表中没有找到,将从顶端重新开始搜寻。
你不能在键击之间暂停超过一秒钟的时间(否则,搜索字符串会复位)。空字符键也会
重新复位。
最大的暂停时间可以在 INI 文件中部分的“ListHotTicks”字段中通过调整
ticks 的值
来改变(18 ticks =1 秒),举例来说:
ListHotTicks=36 ;2 秒
:
:list-browse
# 查看本文文件 ^
你也可以使用 WBAT LIST 来查看小的文本文档。
注意:最大的文件大小是 32 Kb ,而且行宽是 76bytes (超长的部分将被删除).
下面是显示 WBAT.INI 文档的例子。
命令: wbat list WBAT.INI
:
:Text
# 本文显示装置
在屏幕上显示文本你可以用“TYPE”或“ECHO”,但是“WBAT text”指令提供一些额外的功能:
* 可在屏幕上的任何位置输出
* 本文通过标签在布局文件中读出(就象对话框一样)
* 本文中的变量 %%...%%钭被填写
* 颜色,题头,属性
默认情况下,本文将以当前的颜色显示在屏幕上。这意味着在本文输出之前你将通常要
用你想要的颜色清除屏幕。
(详见 WBAT CLS)。
WBAT 从给定的布局文件中通过标签来读出,如果文件中没有标签,将读出整篇文本文档。
但是,只有一个屏幕的文本被显示,多余的将不能显示,没有卷动条。
例子: WBAT list 2,4 :info
WBAT text @ file.txt
::
:text-area
# 本文区域 ^
本文在一个矩形框中被显示,这个矩形框的大小由最长的行和行的数目决定。
当你用不同的背景色显示文本时,你只需注意这一点,象这个例子。
要调整矩形框的文本,可加入空行和左边/右边的空格。
跟通常一样,左上角的位置被定义为矩形框的位置。默认值是 1,1。如果本文框超过右
下角的边缘,位置将会被调整以适合大小。超过屏幕大小的本文将不能显示。
刮弧里的可选的颜色
:
:text-example
要实现这样的一个本文显示,用如下的命令格式:
wbat text 8,16 (blue on light brown) @:text2example ^
::
:text-attrib
# 本文显示的属性 ^
你能在布局中使用两种特殊的颜色来标记行或段落。这些颜色在 WBAT.INI 中定义:
TextHi 屏幕本文高亮
要使文本或段落高亮,可在文本或段落的开始及结束处插入“~”符号。(“~”可以在 INI
文件的段定义HiSymbol来改变。)
# TextTitle 屏幕本文标题 ^
放在最左一列的“#”符号标记了标题行(任何地方,不只在页的顶端)。标题颜色的宽度是
整个文本的宽度。 由最长的行决定。要强制一个更长的标题,可填入空格或在结束处
用“^”标记。
::
:text-quick
# Quick text ^
关于对话框命令,有一种 "快的模式(Quick text)" 显示一个简短的信息,就象定义命
令参数一样。
这就非常方便用指定的颜色来显示信息或标题,象下面的例子:
wbat text 11,30 (+white on red) " Pls. ignore this message! "
::
:fill
# 用图案,字符串,颜色,CLS填充一个区域 ^
你可以用任何字符或字符串填充一个矩形框,或者只是改变颜色。一个特殊的选项容许
一行一行的交替给定字串。看下面的例子。
用“FILL”命令你也可以清除屏幕的指令:
wbat fill " "
CLS 指令起到一样效果:
wbat CLS
可选择的颜色 (默认由WBAT.INI定义):
wbat CLS (white on blue)
::
:fill-syntax
# 填充语法 ^
语法: wbat FILL position (dimensions) (colors) "string" +s
为所有参数的默认解释。
position:左上角的行坐标和列坐标,默认是 1,1
dimensions:填充区域的宽和高(总是在刮弧中)。默认值: 屏幕边缘。
colors:颜色,默认值:屏幕颜色 (WBAT.INI)
string:将会在每行中被重复; " " 清除;
字串省略: 只有颜色被改变(文本保留)
+s:替换每一个随后的行
若填充区域超过屏幕边缘,将会被剪切。
例(演示版的蓝色区域)
wbat fill 13,32 (9,28) (+magenta on blue) "揽谫" +2
::
:cursor
# 光标与卷动栏
如果你想准备让你的屏幕输出其他程序,你需要光标指令。
对于其他程序的输出。WBAT 不使用 DOS 光标(只有 CLS 指令使光标复位到初始位置)。
举例来说,如果你文本输出到屏幕上半部分,而后续的程序和DOS命令输出到屏幕的中
部,你可以将光标设置到第13行:
wbat cursor 13
你也可以从当前行或任何指定的行开始发送移行命令给屏幕,当光标到达底部时,屏幕
将会卷动。
例子: wbat cursor 25+5
这将移动光标到底行, 并卷动 5个行。
:
:screen
# 屏幕保存/恢复 ^
WBAT boxes (box/menu/list) 总是出现, 意味着当对话框被关闭后背景将得以恢复。
对于嵌套菜单和对话框的特殊影响,WBAT提供了一些额外的功能。
* “FIX”前缀可使对话框固定, 也就是被关闭后仍保留在屏幕上。这样你可以打开另一
个对话框,而第一个对话框保持可见。注意:固定的对话框不能在屏幕上拖动。
例子: call w.bat FIX menu :start
* WBAT save/restore 当它用于其他输出(如更多的对话框,查看文档等)时,将保存
屏幕。
WBAT SAVE 拷贝屏幕映像到文件,并存放于%%TEMP%%目录里。
WBAT RESTORE 恢复屏幕,并且删除临时文件。
为了使用超过一个文件,需要指定ID号。
例子: wbat save 2
:
:palfont
# 字型和调色板,Windows 字型 ^
注意这个演示不使用由BIOS或者Windows提供的默认颜色。
WBAT 提供指令为全屏模式载入用户调色板和字体字形。
颜色也可在 Win95/98 窗口中工作,不能在Windows NT 或 2000下工作,但这些系统
支持为DOS对话框设计的用户颜色。(详见NTcolors.bat调整)
对于GUI窗口,提供两种“new bitmap fonts”:
SANS16.FON 9*16 象素字型 (窗囗宽度: 720个图素)
SANS19.FON 10*19 象素字型 (窗囗宽度: 800个图素)
在GUI窗口中能被选择之前,这些字型可通过 Windows 控制板被安装。
::
:palette
# 用户定制的颜色色调色板 ^
WBAT PAL 装载由WBAT.INI指定的颜色设色板文件。
这个演示文档的调色板在文件 PAL.INI 中定义, 设计为亮的背景和暗的字符。修改颜
色值请参照PAL.INI的注解。
如果没有找到调色板文件 (在 WBAT PAL 之上),WBAT 将使用一内建的默认调色板,是
相同于原始的 PAL.INI。
注意:
在一个GUI窗口中颜色不会立即改变, 而是提供给后续的输出。 因此,要在PAL命令后
清除屏幕。
调色板将保留直到程序恢复到video模式。
要移除订制的调色板,运行 DOS 指令: MODE CO80
::
:font
# 完整的屏幕字型 ^
wbat FONT 载入由WBAT.INI指定的字型文件。SANSERIF.FNT被提供。
注意,字型只在全屏模式中显示, 但在GUI窗口中激活也不会有害。
可选择地,你能将屏幕设定为 33行:
wbat font 33 (重新设定: wbat font 25)
这个指令也会将GUI窗口换成 33个行,扩大窗口.(虽然字型本身被忽略)。请在 DOS
提示符下测试。
字形将保留直到程序恢复到video模式。
要移除订制的字型,请运行 DOS 指令: MODE CO80
::
:No_ansi
# ANSI控制台驱动器 ^
你当前不在运行ANSI标准驱动器。
如果你不知道ANSI驱动器是什么,只须跳过下面部分。 WBAT 不需要ANSI驱动器。
信息:
ANSI CODES用于颜色和光标,控制屏幕输出。程序通常仍然使用与它一起提供的这些编
码进行ANSI仿真。
标准的 Windows 配置不载入ANSI驱动器。
:
:ansi
# ANSI控制台驱动器 ^
首先,所有的 WBAT 输出不受ANSI的影响。
然而,来自其他的程序 ( 透过标准输出) 的输出不将会在目前的屏幕上彩色显示,而
是以先前已经由ANSI CODE程序通过的颜色显示。(初始:白色(前景)、黑色(背景))。
这意味着如果你想按指定的颜色输出其他的程序,你必须使用 ANSI CODES 额外的为
WBAT 提供颜色输出。
WBAT 提供了一个指令帮助你以防万一当前有一个未知的ANSI驱动器:
wbat ANSI? 如果没有ANSI驱动器发现, 返回 errorlevel 1
可选择地,你可以加入一个ANSI CODE程序,将会只被送出, 如果存在一个激活的ANSI
驱动器 (因此你不会在屏幕上产生任何乱码。
:
:stdout
# Wbat STDOUT ^
既然有 Wbat TEXT 指令, 我们需要 STDOUT 做什么?
答案是:输出到 STDOUT 可重定向到一个文件。
AND 为什么不用TYPE?
有两件事TYPE不能实现:
* 读来自一个文件里的有标签的小片断
* 代替环境变量
指令: wbat STDOUT @file.txt
Wbat STDOUT 只产生一个场景用于例如重定向到一个文件、一个集合、一个从文本片
断或模板来的文件。
你必须找出你自己需要的功能来使用。
:
:Elevel
# Wbat errorlevel值 ^
~WBAT errorlevel n~ 将 errorlevel 设定为 ~n~, 这对有时进行的测试是非常有
用的。
这功能也能习惯于测试是否 WBAT.COM 发现
指令的编译: 设定一个不通用的变量并测试它。
~WBAT EL 219
if errorlevel 219 if not errorlevel 220 goto continue~
echo WBAT 没有发现
goto exit
:continue
注意: 在WIN 2000/XP下~%%errorlevel%%~ 扩展为数字字符串
errorlevel, 创建一个还没有名称为~errorlevel~的环境变量
用名称 ~errorlevel~ 的变量. (如果设置了这个变量, 无论怎
样都不会影响 "if errorlevel ..."的存在状态.)
:
:setup-title
谀哪柯哪目谀履口柯哪目^
滥哪棵? ?? ? 趁哪馁
滥哪倭哪馁 ? 滥哪倭
:
:setup-menu " WBAT 应用程序的安装 "
储存 WBAT 运行时的文件、路径
--------------------------------------------------------------
WBAT.INI,override、文件/颜色明细
--------------------------------------------------------------
提供环境变量空间
--------------------------------------------------------------
编辑器, 多重 DOS 对话框
-----------------------------------------------------
:
:install1
# WBAT 安装 ^
为了运行这个演示文档,你或许已经将 WBAT 文件解压到一个初定的文件夹。
当你要使用 WBAT 来制作你自己的批处理时,DOS 必须能从你的目录结构定位程序文件。
这通过设定路径来实现(详见autoexec.bat),就象下面的语句:
PATH C:\ WINDOWS;C:\ Windows\command;C:\ DOS\UTIL
当一个文件不在当前的目录中时,COMMAND.COM 试着定位指定文件夹的程序文件。
因为只有几个 WBAT 文件被共用,因此最好将这些文件拷贝到一个已经存在的公用文件
夹里,这个文件夹是你包含在你已经指定的路径中的。当然你也可以创建新的文件夹,
然后将其加入到你的PATH中。
:
:install2
# 安装 WBAT 文件 ^
注意: 最初的 WBAT 文件应该存放在一个分开的文件夹中,这样你才能在任何时候以最
初的设定运行DEMO。
拷贝这些文件到“public”文件夹,并将这个路径设定到PATH中:
WBAT.COM
W.BAT
WBAT.INI
第一、二是可执行文件。 INI 文件放在与 WBAT 要运行的程序文件相同的文件夹中。
默认情况下,文件 PAL.INI 和 SANSERIF.FNT 也被放置在这个文件夹。然而,如果你
不喜欢在那里有太多文件,可以放在子文件夹或磁盘上的任何其他的地方。 在这种情
况下,你必须修改你的 WBAT.INI 。 详情见下面一章。
要在GUI 窗口中使用“bitmap fonts” SANS16.FON 和 SANS19.FON,必须在 Windows
控制面板中安装它们。
:
:inifile
# INI 文件 WBAT.INI ^
全局的 WBAT 设定从放在与WBAT.COM文件同一个文件夹的 WBAT.INI 中提取。
你也可以在其它目录里创建为指定项目而修改的 WBAT.INI。 WBAT 在检查它自己所在
目录之前,总是在当前目录中寻找 WBAT.INI。
这个演示的配置项目在各自的章节有解释,也可参见WBAT.INI 的注解。
注意: 如果没有找到 INI 文件,WBAT 将使用内建的与初始的INI文件相同的默认值。
:
:ini-menu
:
:ini-override
# Override INI 文件设定 ^
所有的INI文件里的设定都可通过变量临时改变。
变量名就是INI文件里的项目名,用“W”作为前缀。
例子: SET W button=black on +cyan
SET W rightESC=0
SET W radiosymbol=254
要返回到 INI 文件设定,清除变量。
例子: set W button=
:ini-files
# WBAT.ini 的文件规格 ^
通常,你能按照DOS规范(8.3命名)在你的 WBAT.INI里指定一个文件。作为一个例外,
“+”可作为一个前缀用于指向 WBAT 的目录 ( 也就是程序文件 WBAT. COM 所在目录)。
* 对于默认的源文件(布局) 文件名必须被指定,没有路径。 这样你能使用名字作为
局部的默认文件,也用于WBAT目录里的全局的默认文件(只需要“+”指向).
例子: SourceFile= WBAT.TXT
* PAL.INI 和 SANSERIF.FNT必须用全路径指定,或者用“+”前缀。例:
PalFile=C:\some\where\Pal.INI
PalFile=+pal.INI (在 WBAT 的目录中)
PalFile=+data\Pal.INI (在子目录中)
:
:ini-colors
# INI 文件里的颜色设定 ^
参见 INI 文件的注解, 详细的描述请参见“layout”部分。
关于颜色解释,请参见 Commands/Colors.
一些特别的功能:
* 对于分割线和阴影的颜色被忽略。分割线的背景总是从激的对话框的颜色中提取。
* 对话框阴影可以通过设定“NONE”来关闭。
* 对于热键颜色 (在按钮中) 的背景是可选的。“NONE”将完全关闭热键功能。
:
:Environment
# 环境空间 ^
WBAT 使用环境变量报告输入的是字符串或有名字的按钮, 举例来说。
变量被储存在 COMMAND 环境空间中,要列出当前储存的所有变量,使用 DOS 命令 SET
(不带参数)
既然环境空间被限制,你应该小心的处理以便有足够的空间运行你的 WBAT 批处理。
Windows 的DOS对话杠默认是384bytes。要改变其大小,请打开DOS对话框/内存的属性。
Win98好像自动将环境空间增加到400这对于从一开始就提供足够的空间是一个好主意。
对于 DOS 版本为 6.x 以上的,详见文件 ESPACE.TXT 里的注释。
工具 ECHECK.bat 提供了一个是否达到最小可用空间的测试。参数可参见到这个文件
里的描述。
记住清除那些不会再用于你的批处理的所有变量。
::
:project-editing
# 项目编辑 ^
如果你使用一个 Windows 编辑器,扩展的 ASCII 字符( 图形符号
或特别的欧洲字符)只有在当你选择了终端字体时才会在DOX对话框中恰当的显示。你的
编辑器也可提供“bitmap fonts”给WBAT(与终端字体一样,大小 12/14)
你能开启几个 DOS 对话框测试你的批处理文件,编辑布局文件,并且运行 WBAT 演示
来获得信息,所有都在同一时间进行。
当一个批处理在另一个DOS窗口运行时,不要编辑这个批处理文件。
COMMAND.COM 保留了行的物理位置以便继续,当你编辑这个文件时,这些位置可能会改变。
:
:command-menu " 批处理文件中的命令 "
所有WBAT命令的列表
-------------------------------------------------------------?
生产变量,alt: STDOUT
-------------------------------------------------------------?
一行同时几个 WBAT 命令
-------------------------------------------------------------?
输出位置,尺寸
-------------------------------------------------------------?
在命令,INI 文件,表达式中
-------------------------------------------------------------?
@FILE:label, 局部的/全局的参考
-------------------------------------------------------------?
预选择,超时
-----------------------------------------------------?
:
:command-title
谀哪口哪目谀履口穆目谀哪口目柯哪目谀哪縙
? ? 吵 ?吵 ?趁哪拇??吵忱哪目
滥哪倮哪馁? 亮亮亮滥倭哪馁滥哪?
:
:commands
# WBAT 指令,语法 ^
WBAT command (普通语法)
call W.bat command (当有变量时)
命令:
box |menu| list ]
text
box 按钮 ]
text "字符串"
fill
cls save
cursor restore
ansi?
font
stdout @文件 pal
fix box|menu|list... (前缀: 对话框将保持可见当关闭时)
参数的细节请见下面的细节。
关于指令的功能性请参见 WBAT 浏览。
:
:wbat-batch
# W.BAT的结构 ^
为了能产生用于批处理的变量, 需要一个专门的结构。 原来那种直接在程序里设置变
量的方法已经不再支持。 因为它不能在视窗 NT/2000 之下工作, 而且对 Windows 版
本来说是不安全的。
当你想要 WBAT 生产“变量”时(用于 box/menu/list 指令),
你必须用: call W.BAT <command> <parameters>
来代替 : WBAT.....
文件 W.bat 运行 WBAT.COM, 而且能很好的运用变量。
请阅读 W.bat 指令(下一页)来获得相关的重要信息。
作为一个更替,WBAT 能将设置定义写给 STDOUT,用于重定向到一个临时的批处理文件。
:
:wbat-menu
:
:wbat-command
# W.BAT ^
批处理文件 W.bat 传递指令参数给 WBAT.COM。最多允许9个参数,但是通常你不需要
那么多。
例: call w.bat box 5,12 (+white on blue) @file.ext:label #3,5
--------1--2--3-----4----5---6----------7---------8-9
避免布局参考的空间,同时在颜色表达式中使用 "+" 代替 "明亮的"。 作为更替,整
个参数字串可用双引号括起来 (不能在 DOS 6.x或更早期的版本下工作).
例子: call w.bat "box 5,12 (+white on blue) @file.ext:label #3,5"
引号内的字符串将作为单一的指令参数传递给w.bat。 WBAT.COM 将忽略引号。
注意:
“quick box”(没有布局)不能被用于 CALL W.BAT 结构。只通过 errorlevel 处理。
:
:wbat-details
# W.BAT的工作方式...
只在你感兴趣的情况下阅读这一部分。
在W.BAT的第一行运行给出参数的WBAT.COM:
WBAT $W %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9
$W 参数告诉 WBAT.COM 从它运行的位置(目录)打开批处理文件 (也就是 W.BAT,与
WBAT.COM 在同一目录),并且从这个文件的第二行开始写设置定义,因此,他们将会
在第一行执行完后被正确执行 (也就是 WBAT.COM 结束).
不要改变 W.BAT 的第一行。当每一次W.bat运行时,其它的行将被重写。
注意:万一你想重新命名 W.BAT: 只支持一字节的文件名,并且第一行的 $W 参数必
须改变为文件名的名字(如T.BAT就为$T)。
:
:wbat-stdout
# 通过 STDOUT 设定变量 ^
WBAT 也支持一个更传统的方法生产变量,这在只读媒体(这时W.BAT不能运行)运行
WBAT是很有用的。
当 wbat.com 发现输出重定向到一个文件时,SET 指令将写给STDOUT,文件必须是一个
批处理(.BAT)文件,这样才能被调用来执行 SET 命令。
例子: wbat box :start_menu > %%temp%%\wtemp.bat
call %%temp%%\ wtemp.bat
推荐使用 %%temp%% 目录。
不要忘记删除临时文件。
::
:multiple
# 多重指令 ^
WBAT 能够在一行中接收几个命令。用感叹号(!)分开这些指令。
例子:
wbat cls ! text 2,5 @file.ext:label1 ! box continue,back
--- ------------------------------------------
wbat pal ! font ! cls
--- -------
程序名 WBAT 需在开始时写一次。
注意:
如果“box”指令 (box/menu or list) 被包括在内,则必须放置于最后一行。
在多重指令行中不能使用 CALL W.BAT 结构。
:
:Position
# 位置和大小 ^
所有的对话框都能定义位置(行和列),就跟 TEXT 和 FILL 一样。位置通常是指对话
框的左上角。 本位是 1,1.
如果一个 box 或 text 输出超过正屏幕的右下角边缘,WBAT 将自动调整位置。
默认值:
boxes(box/menu/list) 放置于屏幕中央,如果只有行坐标被规定,box将放置于水
平中间位置。
Text 和 Fill 将从本位开始 (1,1)
:
:Dimensions
# 大小 ^
boxes 和 text 的输出大小由layout定义(最长的行和行数)。
FILL 允许指定的行和列,用圆括号()括起来。
例子: wbat FILL 5,12 (10,30) (white on blue) "<>"
默认大小: 上至屏幕边缘。
:
:colors
# 颜色 ^
内定的颜色在 WBAT.INI 中定义。 如果 INI 文件不存在,或颜色在 INI 文件中没有
定义,内建的默认值将被使用。( 相同于原始的 INI 文件)
WBAT 支持不同的颜色规格:
box/menu/list 对话框颜色
text 本文颜色
fill/cls 填充颜色
(颜色表达式总是用圆括号()括起来)
其他的颜色, 如按钮和条的颜色,能在你的处理中通过变量来改变。
注意:
默认的文本颜色是当前的屏幕的文本颜色(而不是由INI指定)
:
:color-expressions
# 彩色表达式 ^
颜色用这个格式定义: <前景> ON <背景>。单词“ON”是可选的。
在DOS对话框中,十六种颜色是可用的。 (8个正常,8 明亮的)
颜色: black,red,green,blue,brown,cyan,magenta,white
可选择的: bright 或用 “+”符号
同义字: light=bright
yellow=bright brown
grey/gray=(normal)white
例子: bright brown on blue
+brown on blue
black on +brown
注意: WBAT指令中的颜色表达式总是用圆括号()括起来。
:
:layref-menu
:
:layref
# 布局参考 ^
box/menu/list 指令的布局由文件名和标签定义。
* 文件名前加一个前缀@ e.g. @dialog.txt
* 标签前加一个前缀: e.g. :START
例子: call w.bat box @dialog.txt:START
通常,你能依照 DOS 习惯定义文件,或者没有路径, 或者是相对路径,或者是完整的
路径 (只能使用DOS 8.3 的命名规则)。
特别的, “+”前缀是指 WBAT 的 "公用" 目录。
例子: call w.bat box @+dialog.txt:START
在大多数情况下你,将可省略文件名字,因为 WBAT 提供一个容易的方法使用默认的文件。
注意: 不要漏掉布局文件的扩展名。
参见“default extension”。
:
:layref-default
# 默认的布局文件名 ^
在提供的INI文件里,默认的布局文件是WBAT.TXT,用于这个演示。建议指定默认的文
件时不要用路径。 使用“WBAT.TXT”或其他任何你喜欢的名字。
如下面的例子,你可以用本地的默认名字,就跟在全局的布局文件一样:
call w.bat box :START 用于 WBAT.TXT 在当前目录
call w.bat box +:START 用于 WBAT.TXT 与WBAT.COM同一个目录
注意: 当布局参考是用“+”或“:”开始时,“@”符号并不需要。
:
:layref-local
# 调用本地布局文件的本地批处理 ^
当批处理总是在自己的目录中运行时,你可以使用本地的布局文件(在同一个目录里),
不需要指定路径。
例子: call w.bat @layout.txt:START
或 call w.bat :START (用于默认是 WBAT.TXT 的情况)
注意:
请确认:当WBAT运行时,当前驱动器和目录必须能在你的目录中被完全的选择。
要知道批处理(或在批处理中运行的程序)可能在程序返回到主菜单前改变驱动器号和/
或目录。
推荐你适当的设置你的驱动器和目录(因为这种情况下你要处理其他文件)。
关于更替,请参见下面。
:
:layref-global
# Global layout file ^
如果批处理是设计为在任何的目录中运行,BAT文件就必须在PATH设置的目录里。
因为没有“地方目录”那可以装载,必须告知 WBAT 源文件的位置。
为了避免定义完全路径,把布局文件在和 WBAT.COM 相同的目录里。 你总是可以用“+”
前缀来指向这一目录。
举例来说: call w.bat +Xproject.txt:start
或: call w.bat +:start (对于默认的布局文件是 WBAT.TXT 的情况)
注意: 你不需要为每个项目设计一个单独的文件。只须确定文件内没有重复的标签。布
局文件的大小没有限制。
::
:layref-bat
# 批处理文件中的布局源 ^
如果你喜欢把布局直接放置在批处理文件中,请确定批处理过程不会陷入布局部分,并
且没有任何重复的标签。 为了指定批处理文件作为布局源,可使用“%%0 批参数。
例子: call w.bat box @%%0:Box-layout
WBAT 将会检查有效路径变量里的目录来定位文件,你不必担心布局文件的适当的目录。
这方法较适合”全局的“批处理,文件能通过路径来定位。在其他的情况下,这个方法是
安全的,只要你不改变当前的目录和驱动器号(%%0包括了批处理文件的完整路径)。
注意: DOS 用命令代替了 %%0 ,就象敲入DOS命令一样。
:
:layref-extension
# 默认的扩展名 ^
实际情况下,插入DOS的指令用%%0参数替代,扩展名.BAT可以省略。
要使%%0参数工作,WBAT 假设默认的扩展名是.bat,无论何时,都可指定没有扩展名
的布局文件。
基于这一个理由,不要使用真的没有扩展名的布局文件。
:
:bar-options
# 按钮 参数 ^
默认的高亮条目设置成对话框、菜单、列表的第一选项。要改变这个位置,可在选项
号前加一个“#”作为最后的参数。
例子: call w.bat :main #3
条目的位置参数也接受如 a-b 或 a+b 一样的数学表达式。
这可用于菜单里预设选择下一个选项。
关于详细的信息请参见“Control”部分 (使用变量,? 变量).
:
:time-out
# 倒计时关闭推出 ^
可选的,超时设置可使用于在(设置的)秒数后自动关闭对话框,并返回预设的选项作为
被选择项。
例子: call w.bat box :main #3,5
重要的:
预选项必须是一个按钮,因为当超时时 WBAT 产生一个 ENTER 键,而 ENTER 关闭对话
框只能通过按钮!
当一个键被按下或鼠标被单击时,超时将被取消,但不管有没有效的输入都没有影响。
最大的超时:3,600 秒 (1 小时)
倒数计时显示装置:
你可以在对话框的任何位置显示倒数计时,在布局中用“#”表示
详情请参见“Layouts / Timer Display”
:
:layout-menu “对话框、菜单、文本布局的设计”
标签,大小,变量
--------------------------------------------------------------?
框体,阴影,标题, ,分割线。
--------------------------------------------------------------?
按钮,&热键,输入和其他的元件
--------------------------------------------------------------?
本文高亮和表头线
--------------------------------------------------------------?
倒数计时闭一个对话框
--------------------------------------------------------------?
所有的特殊符号
--------------------------------------------------------------?
见 Colors.bat
------------------------------------------------------?
:
:layout-title
? 谀哪口口哪目? 口穆目谀哪縙
? 媚哪蠢穆馁? 吵忱 ? 滥哪?
聊哪倭 ? ? 滥哪倮哪馁 ? 滥哪?
:
:layout-general
# 一般信息 ^
一个布局可以自成一个文件,也可以跟其他的布局单元合在一起,这时每个布局都用“
标签(label)”识别身份。
标签的前面有一个冒号(:), 像批处理文件。但长度没有象DOS和Win9x 那样的 8 个
字符的限制。
布局是一个纯 ASCII 本文。用方括号括起来的对话框的控制元件能被放置在任何地
方。布局的结束是在最左端的一列加一个冒号(:)(这个冒号也可以是下一个布局标签)
布局总是产生一个矩形的区域, 这个矩形的大小取决于最长的行和行的数目。对话框
将加在一个框架(同上下左右各一条线组成)上,其它空间,将由空白空间和空行填充。
注意:为防止你的编辑器将一行后面的空白字段截去,可用脱字符(^)来标记行的结束
(这将不会显示出来)。
:
:layout-variables
# 在布局中使用环境变量 ^
在批处理文件中,变量 ( 带%符号) 会被替代。
例外: 不能在控制元件中使用变量。 (如:按钮)
例子 (assuming FILE=SAMPLE.TXT)
在布局中: read %%file%% for details
在输出中: read SAMPLE.TXT for details
注意:字串的大小会影响对话框的宽度!对话框的行数超过 78bytes 将产生错误信息。
文本超过 80bytes 将被切断。
固定输出长度的变量能通过用下划线填充来完成。这保留的“栏位”(包括变量的名字)将
填充进字串里。 根据实际的大,字串将会被填时空白空间或被切断(!)。
例子
在布局中: %%VAR%%__________ %%VAR2%% or more text ...
在输出中: actual string string2 or more text ...
:
:layout-Style
# 布局类型 ^
WBAT 从 WBAT.INI 里读取颜色和其他的设定。
你可以使用你的偏爱设置, 并将它用于你的所的对话框和其他的WBAT输出。
当然,你可以用变量来临时改写所有的 INI 文件的设定
( 变量名 =W项目名).
详见“Setup/INI file/override部分”
注意:对话框颜色也在box/menu/list指令中指定。
:
:style-menu "对话框设置"
::
:Style-frame
# 对话框的框架
在这个演示中使用了一个空白的框架,但是你也可以在 INI 文件中定义一个不同的图
案: 在 3 点之前想像一个 3 的最小架框,
~谀縹
举例来说: ~?硚 然后排成一列放 9个字符: "~ 谀砍忱馁~"
~ 滥賬
中央的字符应该是空白,因为它将填充对话框。
# 对话框阴影
当在INI文件里找到有效的阴影颜色时,一个阴影将是可见的(默认值:淡黑色)
要关掉阴影, 请设置“shadow=NONE
::
:style-title
# 对话框标题
对话框标题(替代上边框,见下述)可在布局的标签行里设置。双引号是必须的。
例子: :style-menu "Box style"
.....
标题位于中间。 颜色由 INI 文件里的BoxTitle 指定。
# 分割线
为了产生不同颜色的分割线,可使用“?”字符(ASCIII 码: 196)。这将总是显示INI文件
里定义的颜色来显示分割线。只有前景颜色才有(背景规定会被忽略).
::
:style-highlighting
# 对话框的高亮文本 ^
要高亮一个单词或文本段,可在单词或文本段的开始和结束处加符号 (~)。
颜色由 WBAT.INI 里的 BoxHi 定义。
注意:
相同的功能可用以 TEXT 输出。 ( 颜色由 INI 文件里的 TextHi 定义),“~”符号可用
其他符号代替,要在 INI 文件里的“general”部分定义HiSymbol。
HiSymbol。
:
:style-extra
# 特别的 ESC 按钮
如果你希望在对话框的右上角有Windows风格 按钮,将它加入布局文件的标签行里。
例子: :style-menu "Box style"
或: :any_box
方括号是不可缺少的,任何符号都可用来代替“x”。
注意:
点一下 按钮有与按ESCAPE键相同的效果。
:
:Layout-control
# 布局中的控件
所有的控件都被括在方括号里。
第一个字符决定控件的类型:
输入栏
复选框
单选按钮
ESCAPE按钮
(其他的)普通按钮或菜单条目
ESCAPE 按钮看起来像任何其他的按钮 ("?" 被移除),但触发的是 ESC 键。 对于特别
的 ESC 处理请见“Control”部分。
要在一个普通的对话框文本里使用打开的方括号,它必须用两个,举例来说:
:
:element-menu
:
:hotkeys
# 热键 ^
这个演示的按钮或菜单条的热键用红色标记 (见 INI 文件)。要屏蔽热键功能,可设置
HotKey=NONE。
按钮或菜单项目的第一个字符是默认的热键字符。在多个按钮的第一个字符相同时,可
标记其他的字符,只需在该字符前加个“&”符号。
例子: Buttons:
Menu item:
注意:
热键字母也可以与ALT键组合使用。(当光标是在一个输入栏中的时候,就提供了这种
热键支持)。
& 符号也可用于“quick boxes” 。
~& 符号也决定,哪个词作为变量返回( 见Control部分)
对个别的按钮可通过一个拖尾的 & 符号解除。
:
:layout-text
# Text Output ^
默认情况下,本文将以基于屏幕的颜色被显示。在 WBAT.INI 里没有默认的文本颜色。
为了显示新页的本文,首先得清除屏幕。
例子: wbat cls! text 2,4 :layout-text
颜色也可在命令行中指定,然而,要注意 WBAT TEXT 通过行数和最长的行来产生一个
矩形框,这一区域周围的颜色将保持不变。
当使用空格来填充时,可在行末用脱字符号(^), 这一个符号将不会表示。
:
:layout-timer
# 倒计时显示 ^
当你想使用计时器功能在一个给定的秒数后关闭一个对话框时,倒计时可在对话框的任
何位置显示,(不在控件里, 也不在“quick box”里),用记号 #? 作为位置标记。
万一用户取消倒计时(用任何输入),计数是被“--”代替。
计时器语法见“Commands/Bar Options”
::
:layout-tbox “计时器测试”
这个对话框将在 15 秒之后关闭,并返回标记按钮的 errorlevel。
#?
:
:layout-symbols
# 特别的符号 ^
结束。
& (box) 标记热键字符 (只能在按钮里使用)。
%% (box/text) 环境变量处理,像在批处理文件中一样。
~~ (box/text) 最亮本文部分 (开始/结束)
# (text) 标题栏 (只能用在最左一列)
万一你要在指定的地方用上述的符号 (!) 作为可见的字符,双倍使用它们。
#? (box) 倒计时显示位置
^ 标记一行的结束(只当回车不成功时使用)
膥 (code 196) 分割对话框,总是显示为特别的颜色
: 行开始的冒号(:)作为标签,标记在布局单元的开始和结束处。
_ 下划线用于储藏空间,作为变量的输出 ( 只对紧跟其后的变量有效)
:
:control-title
谀哪口哪目谀?口穆目履哪口哪目? ^
? ? 吵 ?忱 ? 媚穆俪吵
滥哪倮哪馁?滥? ? ? ?滥哪倭哪馁
:
:control-menu "批处理编写控制"
返回的信息
----------------------------------------------------------
返回按钮号,GOTO,ESC
----------------------------------------------------------
GOTO 到name, ESC 处理, %%?%%
----------------------------------------------------------
条件和特别的处理
----------------------------------------------------------
特别的行为和处理
----------------------------------------------------------
更多的信息 ...
-------------------------------------------------
:
:control-general
# 批处理控制 - 一般信息 ^
WBAT 返回 errorlevel 信息,可选择地,变量对用户的输入起作用。
如何处理“BOXes”( 和菜单) 将在下章中解释。对于“List”对话框,有一些不同,将在
专门的章节中解释。
章。
记住:
只有在使用 W.BAT 命令时WBAT 才产生环境变量。
无论如何,为了从输入框、复选框、单选框中获得结果,必须使用这个结构。
重要提示:
当一个对话框被 ESC( 或同等行为 ) 关闭的时候,输入框,复选框和单选框的变量将
会保持不变即使他们在框中已经被改变。 这种状况可以在Wbat.ini中修改选项
ESCinput=1 来改变。
:
:errorlevel
# Errorlevels
WBAT 依照所选的按钮号返回一个出错码 (1...) ,按钮号从左到右,从上到下的顺序
按1、2、3... 排列,只有按钮被计算。
要使这些出错码有用,DOS 的 ERRORLEVEL 测试被使用。 记住“if ERRORLEVEL n”意思
是“如果出错码等于或大于‘n’,通过goto语句跳到所指分支,因此,你必须按从高到低
的顺序来排列ERRORLEVEL。
例子: wbat box OK,options,cancel
if errorlevel 3 goto END ( exit code >= 3)
if errorlevel 2 goto OPTIONS ( exit code >= 2)
rem continue here if OK ( exit code <= 1)
Errorlevel 100 将返回ESC。 见专门的章节。
万一“真正的” 错误发生 (比如文件或标签不存在),WBAT返回 errorlevel 255, 和显
示一个信息。 WBAT 将会暂停在错误点,除非你的 WBAT.INI 里设置 ErrorPause=0。
:
:variable
# WBAT 变量 ^
由于用CALL W.BAT代替 WBAT.COM,变量可用于输入框,单选框和复选框,也用于按钮
和菜单选项(然而, 不能用于“Quick Boxes”,也就是不用布局)
这些变量名被用于 WBAT:
WBAT 按钮和菜单项目
WCB1...WCB9 复选框: 0 或 1(off/on)
WRB 单选按钮: 号码1到9
(input) 布局中指定的名字
批处理中的变量用%%标记,举例来说:
goto %%wbat%%
注意: 任何时候 errorlevel 都会返回。
:
:var-menu
:
:var-button
# 按钮变量 ^
WBAT返回被选的按钮、菜单选项的变量,用于GOTO的目标,举例来说。
字串总是一个字,由空格分开。 通常它是第一个( 或唯一的)字,但是如果“& 符号”
用来标记热键,那么这个(完全的)词被获取。例子:
Menu item:
Jump to label with: GOTO %%WBAT%%
Label required: :SCANDISK
不管热键功能是否开或关,“&”都将被识别。
如果单词当为 WBAT 变量被返回,包括任何符号 (除了文字和数字),这些将被剥离,
请确认字符串能作为有效的标签使用。见下页: WBAT string
::
:var-string
# WBAT string ^
因为 WBAT 变量在大多数情况下都将被作为 GOTO 的目标,
而且在批处理中特殊的符号在 DOS 下可能会有问题,因此,WBAT只接受字母(包括高
ASCII 字母) ,数字和下面的这些符号:
@ $ - _ ?
其他所有的符号将被移除。
注意:List box 返回被选的项目不变的
(见 List 章节).
注意:
大写/ 小写被保护。当你比较字符串的时候,要注意。 因为“if string1==string2”与
大小写有关!
:
:var-?
# ? 变量 ^
WBAT 出错码也作为环境变量~%%?%%返回,除非这一功能在 INI 文件 (ELvar) 中被关
掉。 这在菜单中可便利的控制条的位置。
例子: set mpos=1 设定起始位置
:MAIN
call w.bat menu :main #%%mpos%% 最后使用位置
set mpos=%%?%% 把新的位置存档
在这个例子中,选择条被设置到最后选择的位置。 因为使用数学表达式如( a-b 或是
a+b ),你甚至可以选择下一个位置:
call w.bat :menu #%%mpos%%+1
注意:这个方法只在菜单下工作 (或只用在对话框按钮中),因为选择条将设置在其他
控件上, 返回的%%?%%变量只指向按钮。
:
:var-reset
# 重新设定变量 ^
避免环境空间溢出(见Setup/Environment),当变量不再用时,你必须清除它。
例子: set name=
在批处理文件结束时,使用一个 FOR 循环清除一些变量。
举例来说:
for %%%%a in (wbat wcb1 wcb2 wrb input) do set %%%%a=
set ?=
在FOR循环语句中圆括号()里的变量名不要带“?”和“*”,因为批处理解释器会尝试寻找
相配的文件(!)。
在 Windows 下的 DOS 对话框被关闭的时,你不需要清除变量。
:
:ESC-handling
# ESCAPE 处理 ^
当一个对话框被 ESC 关闭时,指定的的信息被 WBAT 返回,为了允许适当的行动。
跟 ESC 键的同等的是:
-> Alt-F4 键,, 或点击“”( 如果有效的)
-> 在对话框外面单击鼠标右键( 除非在 WBAT.INI 中禁用)
->>> 在布局中用“?”标记的按钮上单击(Click)/(回车)Enter 如
按下ESCAPE后,返回出错码(errorlevel) 100。 WBAT 变量被设定...
.. 如果可以的话,可以命名ESCAPE 按钮 - 在对话框布局的任何地方放置按钮。
.. 如果在布局中没有 ESC 按钮,可命名“last”按钮。
( 在“quick boxes”中, ESC 按钮无效)。
注意:如果最后的控件不是一个按钮,变量将会是空的。
:
:ESC-handling2
# ESCAPE handling ^
在你的布局里用特别的ESCAPE按钮是很容易处理的。
if errorlevel 100 goto....将会捕捉任何的ESCAPE动作
或: goto %%wbat%%~ 将会完全的处理(如果有适当的标签)
如果在你的布局里没有设置一个ESCAPE按钮.建议设置具有cancel/exit的最后一个按钮。
if errorlevel <last button number> goto ....
记得用上述的所有数字测试 last button 的 errorlevel,包括 100.
goto %%wbat%% 替代选择也很容易处理,因为任何的ESCAPE动作都按照 last button
设置变量。
:
:list-handling
# 列表处理 ^
WBAT LIST 指令用于提供各种类型的项目,像文件或目录名。注意下列与其他的 WBAT
boxes的不同:
* 被选项返回的不是 errorlevel,因为项目可以超过255。用 %%?%% 变量获得返回数。
* 当一个项目被选择的时候,返回 Errorlevel 0。
Errorlevel 254用于ESCAPE,255 用于真正的错误(程序出错)。
这意味着:你能用 if errorlevel 100 ... 测试ESC,像你习惯于用其他对话框一样。
* %%wbat%% 变量被设定成全部的变量被选择 (也就是来自源文件的所有行). 见下页。
* 按 ESC 后 WBAT 变量将被清空。
* 热键不能用于 list box。
:
:list-variable
# 列表变量 ^
选项作为一个真正的变量返回,就象在列表中创建的一样( 因为它不象其它对话框一
样是用 GOTO 跳到目标的)。
WBAT 返回完整的项目字串包括空格和特殊的符号(但,开头和结尾的空格将被移除。)
只有一个例外:等号将会一被空格取代,因为在SET语句中 DOS 不接受另外的一个等号。
:
:label-prefix
# 标签前缀 ^
一个批处理文件里有几个对话框时,你可以获得从不同的对话框中返回的同样的变量字符串
要在使用 GOTO %%wbat%% 时不出现重复的标签,请使用不同的前缀。
例子: GOTO A-%%wbat%%
假定你有一个按钮字串“拷贝”, 然后...
一个标签可能是: A-COPY
另外一标签: B-COPY
:
:labels
# 标签 ^
在 DOS 和 Windows 95/98 下,批处理的标签最长不能超过8个字符,超出的将被忽略。
你可以使用更长的标签, 但要确定在最初8个字符必须有明确的不一样。
注意:标签长度在视窗 NT/2000 和4DOS 下没有限制,布局文件里的也一样。
无论如何你应该避免不能用于DOS文件名的符号,“?” 没有问题。
特别的欧洲文字:
标签不区分大小写,但是指令在变换高位的ASCII字符时有一个bug,像德国的“变音
(Umlauts)”。为了安全起见,请在标签中用大写的Umlauts,这样,不管 GOTO 变量是
大写还是小写都不会出什么问题,能被适当的处理。
:
:handling-title
? 口哪目谀?柯哪目? ?谀?口哪目^
媚哪疵哪拇??吵吵 ???吵哪?
? 亮亮滥倭哪馁聊哪倭 ?滥倮哪牧
:
:handling-menu "Keyboard, mouse handling"
ESC 和等价的指令、按钮
----------------------------------------------
一般处理
----------------------------------------------
在输入栏中编辑
----------------------------------------------
键盘缓冲区
--------------------------------------
:
:handle-escape
# ESCAPE and equivalents ^
这些键与 ESCAPE 有相同的效果:
Alt+F4, Alt+"X"
用鼠标有三个方法触发 ESCAPE:
* 用鼠标左键单击右上角的 - 如果在布局中提供的话。
* 在对话框外面右单击 - 除非在 WBAT.ini 中被“rightESC=0”抑制。
* 单击对话框里标记为“ESCAPE”的按钮(用?号作为身份识别)。
:
:handle-box
# 一般对话框的处理 ^
鼠标单击 ...
按钮 选择按钮并关闭对话框
输入栏 进入编辑模态并设定光标
复选框 选择状态
单选框 设定 "ON"
键盘: 移动条功能键:
forward 移动光标向右或向下,TAB
backwaard 移动光标向左或向右,shift+TAB
top/bottom 置顶/结束
ENTER 选择按钮并关闭对话框。
但 ENTER 在其他的控件上则仅起到移到下一个的作用。
ENTER 在最后的控件将关闭对话框。
复选框和单选按钮用空格键触发。
热键用 ALT+热键。
:
:Handle-input
# 在输入栏中编辑 ^
在输入栏中这些编辑键得到支持:
光标的 left/right,home,end
insert( ON/OFF)
backspace,del
ctrl+del( 清除剩余的区域)
光标位置也用被鼠标设定。
注意:
在击键前,如果字符串仍然高亮,第一个可见的键,就象DEL键一样,将清空字符串。
移动或设定光标保留可用于编辑的文本。
当在一个输入栏 (编辑模态) 中光标为可见时,你可用热键激活按钮(只须同时按下ALT)
:
:handle-flush
# 刷新键盘缓冲区 ^
当一个程序还没准备好接受输入的时候 , 你按的键将被保存在BIOS键盘缓冲区中。
一旦这程序 ( 或是下一个程序 )接受输入,这些键击将被识别。
如果你不想用户有意或无意的输入盲键,你应该在一个新的对话框出现之前让 WBAT 清
空键盘缓冲区。
在 WBAT.INI 中设定: KeybFlush=1 ( 内定值是 0:走开)
:
:tip-close
# 自动关闭 DOS 对话框
当批处理运行在GUI窗口中时,你也许想在批处理结束时自动关闭 DOS 对话框。这可以
通过设置DOS对话框的属性--->程序栏,勾选完成时自动关闭窗口。
在 Win95/98 下工作还有另一个方法,甚至在你不能控制的其它人的计算机上: CLS。
这很有意义,因为没有任何理由来保持窗开启,不管它是否完全空的。
请确定“ECHO is OFF”(否则指令将会显示出来,而且,屏幕将不再是空的。屏幕被清
空,黑底白字(ANSI 颜色开启?)。
如果你只想在出现一个错误时停止, 可设置 WBAT 对话框返回码为
errorlevel 1:
~
if errorlevel 1 wbat box "Error" close
cls~
::