很多人写脚本时使用set /p获取键盘输入会感到很不方便。
大多情况下会考虑使用choice,但在脚本发布时附带choice下载也不太方便。
于是很多人考虑把choice的替代者以DEBUG代码的形式添加到脚本中。
在这里为大家提供2个短小精悍的choice替代者:
代码一 B8 00 00 CD 16 88 E0 B4 4C CD 21
代码二 cd 16 86 c4 b4 02 cd 10 b4 4C CD 21
以上是两个汇编小程序,都可以实现choice并以%errorlevel%变量返回结果
区别在于:
代码一的返回值为按键的字母代码(例如:按a得到97,按b得到98,按c得到99,方向键没有结果)
代码一的返回值为按键的按键代码(例如:按a得到30,按s得到31,按d得到32.方向键也有结果)
---------------------------------------------------------------------------------------------
现在代码有了,讲讲如何使用
方法一:由cmd脚本输出为com程序文件,代码如下:- @echo off&goto begain
- e 100 B8 00 00 CD 16 88 E0 B4 4C CD 21
- r cx
- @注意b是16进制的11,代表B8 00 00 CD 16 88 E0 B4 4C CD 21的长度为11字节,使用时按需修改
- b
- n sybn.com
- w
- q
- : begain
- ::第一次生成com文件
- debug<%~dpnx0 >nul
- ::以后只需调用sybn命令
- sybn
- chcp 437 >nul
- graftabl 936 >nul
- ::然后加入条件语句
复制代码 方法二:脚本自带choice功能,不输出任何文件代码如下:- @echo off&goto begain
- e 100 B8 00 00 CD 16 88 E0 B4 4C CD 21
- g
- : begain
- ::每次调用都要执行DEBUG
- debug<%~dpnx0 >nul
- chcp 437 >nul
- graftabl 936 >nul
- ::然后加入条件语句
复制代码 --------------------------------------------------------------------------------
注意:以上代码建议去掉注释再执行
chcp和graftabl两行是必须的,用于恢复乱码
[ 本帖最后由 sl543001 于 2009-11-18 17:46 编辑 ] |