中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 18:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 通过大家努力,批处理可告别choice 精华I 查看 14,976 回复 45
31 发表于 2008-12-11 13:33 ·  中国 福建 泉州 移动
初级用户
★★
积分 134
发帖 54
注册 2008-11-19 11:47
UID 131429
性别 男
状态 离线
可否举个例子?
32 发表于 2008-12-11 14:13 ·  中国 北京 联通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
Originally posted by wangff at 2008-12-11 01:33 PM:
可否举个例子?

choice /?
33 发表于 2008-12-11 14:20 ·  中国 福建 泉州 移动
初级用户
★★
积分 134
发帖 54
注册 2008-11-19 11:47
UID 131429
性别 男
状态 离线
我是这样理解的:
1.关于键盘输入choice不外乎也是用ah=0及ah=1两基本功能来实现的
2.choice再好也不是每套系统都有预装(我的xp就没有)
3.choice功能再強也是固定的,而p只要有了这两基本功能其它的就发挥大家的想象能力,是鱼好还是渔杆好大家都明白
4.告别choice作为一个目标,大家共同努力

[ Last edited by wangff on 2008-12-11 at 15:11 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
HAT +2 2008-12-11 17:48
34 发表于 2008-12-11 18:19 ·  中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
这样就不用那么多跳转了
...
ping -n 2 127.1>nul
if %n% LEQ 5 goto loop

echo.
echo 计时到,自动运行!
pause
35 发表于 2008-12-11 18:33 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
UID 19350
性别 男
状态 离线
“是鱼好还是渔杆好大家都明白”
相信真正明白的没有几个
毕竟与鱼相比
鱼竿还需要一汪水和一片饵

如果真要说鱼竿好
那么再问是鱼竿与木棍+线+钩子孰好?
而鱼与红烧鲤鱼孰好?
又该怎么抉择

别忘了debug在cmd是个很麻烦的东西
用起来会有很多潜在的问题(不仅仅是代码页)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wangff +2 2008-12-11 19:15
36 发表于 2008-12-11 19:29 ·  中国 福建 泉州 移动
初级用户
★★
积分 134
发帖 54
注册 2008-11-19 11:47
UID 131429
性别 男
状态 离线
35楼说的有道理,但:
"别忘了debug在cmd是个很麻烦的东西
用起来会有很多潜在的问题(不仅仅是代码页)"

本人确实不知,能否告知一二,如果致命则放弃这种想法.因debug为p嵌入小汇编成为可行,我觉得廷重要的.

[ Last edited by wangff on 2008-12-11 at 19:32 ]
37 发表于 2008-12-12 09:27 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
UID 19350
性别 男
状态 离线
大约的情形可以参考下面的帖子
http://www.cn-dos.net/forum/viewthread.php?tid=9452
http://www.cn-dos.net/forum/viewthread.php?tid=20682

目前已知的是
使用Debug必然要启用ntvdm
而它是与cmd差异很大的一种命令行环境
比如命令行自动完成
比如长短文件名
38 发表于 2008-12-12 12:49 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
UID 59307
状态 离线
还有个问题,这个 choice 不能暂停等待输入(可能就是楼上 qzwqzw 兄说的 "命令行自动完成" 罢),而是一直在 :loop 标签里循环。
┌───────┐
├→学习→实践→┤
└───────┘
39 发表于 2008-12-12 14:21 ·  中国 福建 泉州 移动
初级用户
★★
积分 134
发帖 54
注册 2008-11-19 11:47
UID 131429
性别 男
状态 离线
37楼的问题正在确认...
38 楼的问题 应该不存在,是否会沒带参,是哪一搂的程序?
40 回复 39 楼 wangff 发表于 2008-12-12 14:34 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
UID 59307
状态 离线
是我没看清,原来 27 楼有带参数暂停的功能。

还有一个问题(环境 XP SP3)
动态检测时如果按了某些键(如 Ctrl)之后就会假死,即再按什么也没有反应了。
快速按几个字母也会出现上述情况。
不知带参执行时会不会?
┌───────┐
├→学习→实践→┤
└───────┘
41 发表于 2008-12-12 15:03 ·  中国 福建 泉州 移动
初级用户
★★
积分 134
发帖 54
注册 2008-11-19 11:47
UID 131429
性别 男
状态 离线
"假死"现象会出现,正在找原因...
但应该与debug无关,inc.com也会.
42 发表于 2008-12-13 03:18 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
UID 97070
性别 男
状态 离线
写了一段代码,可返回ascii:

>i.com echo h#CX-~AP3/1/h$CX-}AP3/1/h'CX-~AP3/1/h#CX-xAP3/1/uK
i
echo %errorlevel%
43 发表于 2008-12-13 18:24 ·  中国 福建 泉州 电信
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
UID 586
性别 男
来自 福建泉州
状态 离线
都系强人,看不懂收藏下备用.
QQ:366840202
http://chenall.net
44 发表于 2008-12-17 21:53 ·  中国 四川 成都 电信
新手上路
积分 3
发帖 3
注册 2007-10-20 19:40
UID 100283
性别 男
状态 离线
不过还是借助了汇编。
45 这是我的一个想法: 发表于 2009-01-15 19:09 ·  中国 广东 广州 电信
新手上路
积分 6
发帖 5
注册 2008-05-01 10:16
UID 117451
性别 男
状态 离线
@echo off
echo h#CX-~AP3/1/h$CX-}AP3/1/h'CX-~AP3/1/h#CX-xAP3/1/uK>key.com
chcp 437>nul&graftabl 936>nul
color 2f
:1
cls
echo 请输入密码:%es%
key
set pk=%errorlevel%
set tmp=
if %pk%==13 goto t1
if %pk%==8 goto backspace
if %pk%==97 set tmp=a
if %pk%==98 set tmp=b
if %pk%==99 set tmp=c
if %pk%==100 set tmp=d
if %pk%==101 set tmp=e
if %pk%==102 set tmp=f
if %pk%==103 set tmp=g
if %pk%==104 set tmp=h
if %pk%==105 set tmp=i
if %pk%==106 set tmp=j
if %pk%==107 set tmp=k
if %pk%==108 set tmp=l
if %pk%==109 set tmp=m
if %pk%==110 set tmp=n
if %pk%==111 set tmp=o
if %pk%==112 set tmp=p
if %pk%==113 set tmp=q
if %pk%==114 set tmp=r
if %pk%==115 set tmp=s
if %pk%==116 set tmp=t
if %pk%==117 set tmp=u
if %pk%==118 set tmp=v
if %pk%==119 set tmp=w
if %pk%==120 set tmp=x
if %pk%==121 set tmp=y
if %pk%==122 set tmp=z
if %pk%==48 set tmp=0
if %pk%==49 set tmp=1
if %pk%==50 set tmp=2
if %pk%==51 set tmp=3
if %pk%==52 set tmp=4
if %pk%==53 set tmp=5
if %pk%==54 set tmp=6
if %pk%==55 set tmp=7
if %pk%==56 set tmp=8
if %pk%==59 set tmp=9
if %tmp%== goto 1
set es=%es%*
set ep=%ep%%tmp%
goto 1
:backspace
if "%ep%"=="" goto 1
set ep=%ep:~0,-1%
set es=%es:~0,-1%
goto 1
:t1
echo 你的密码是:%ep%
pause
论坛跳转: