中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (问题尚未解决) 在批处理中是通过怎样的命令实现人机对话
« [1] [2] »
作者:
标题: (问题尚未解决) 在批处理中是通过怎样的命令实现人机对话 上一主题 | 下一主题
mtx
初级用户




积分 187
发帖 21
注册 2005-1-22
状态 离线
『楼 主』:  (问题尚未解决) 在批处理中是通过怎样的命令实现人机对话

dos下有类似read a的命令吗?就是为a变量输入一个值,应该有类似的命令吧?

“CHOICE”命令只能选择,输不了变量,如果在光盘的批处理程序里设个密码,用“CHOICE”命令恐怕弄不了.


[此贴子已经被作者于2005-1-30 10:44:06编辑过]




2005-1-29 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 2 楼』:  

你的“read a”应该是BASIC的语句吧。DOS里也有类似功能的命令:SET。如:SET A=123。注意在DOS下用SET定义的变量都是字符型。当要引用变量时,用两个百分号包住变量名,如:echo %a%将显示A的值。



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2005-1-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
Denver
初级用户




积分 123
发帖 10
注册 2005-1-26
状态 离线
『第 3 楼』:  

set /p



能达到您所说的效果。



不过是在windows 2003的命令行确定有效,纯dos下未知。


[此贴子已经被作者于2005-2-1 18:49:09编辑过]




2005-2-1 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mtx
初级用户




积分 187
发帖 21
注册 2005-1-22
状态 离线
『第 4 楼』:  

我用for 命令\set 命令\choice命令可以实现在批处理里设密码,但缺点是输入密码时每一个字母都显示一行,同时必须在启动映象里加上choice.com 命令.不知道那位老手能找到更好的方法
我的主要思路如下:
通过for %%f  in (1 2 3 4 .....N) 调用 批处理 www 注:N为密码位数
www.bat的内容:
echo off
choice /c:abcdefghijklmnopqrstuvwxyz  /N
if errorlevel 26  goto next26
if errorlevel 25  goto next25
if errorlevel 24  goto next24
if errorlevel 23  goto next23
if errorlevel 22  goto next22
if errorlevel 21  goto next21
if errorlevel 20  goto next20
if errorlevel 19  goto next19
if errorlevel 18  goto next18
if errorlevel 17  goto next17
if errorlevel 16  goto next16
if errorlevel 15  goto next15
if errorlevel 14  goto next14
if errorlevel 13  goto next13
if errorlevel 12  goto next12
if errorlevel 11  goto next11
if errorlevel 10  goto next10
if errorlevel 9   goto next9
if errorlevel 8   goto next8
if errorlevel 7   goto next7
if errorlevel 6   goto next6
if errorlevel 5   goto next5
if errorlevel 4   goto next4
if errorlevel 3   goto next3
if errorlevel 2   goto next2
if errorlevel 1   goto next1
:next26
set readone=z
goto allnext
:next25
set readone=y
goto allnext
:next24
set readone=x
goto allnext
:next23
set readone=w
goto allnext
:next22
set readone=v
goto allnext
:next21
set readone=u
goto allnext
:next20
set readone=t
goto allnext
:next19
set readone=s
goto allnext

:next18
set readone=r
goto allnext
:next17
set readone=q
goto allnext
:next16
set readone=p
goto allnext
:next15
set readone=o
goto allnext
:next14
set readone=n
goto allnext
:next13
set readone=m
goto allnext
:next12
set readone=l
goto allnext

:next11
set readone=k
goto allnext
:next10
set readone=j
goto allnext
:next9
set readone=i
goto allnext
:next8
set readone=h
goto allnext
:next7
set readone=g
goto allnext
:next6
set readone=f
goto allnext
:next5
set readone=e
goto allnext
:next4
set readone=d
goto allnext
:next3
set readone=c
goto allnext
:next2
set readone=b
goto allnext
:next1
set readone=a
:allnext
set userpw=%userpw%%readone%
程序大概是这样,可以实现目的,但很令人不爽,密码不是一步输完的.不知道那位有好方法?

2005-2-1 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Denver
初级用户




积分 123
发帖 10
注册 2005-1-26
状态 离线
『第 5 楼』:  

@echo off

:set_password

set /p password=

set userpw=%userpw%%password%

goto set_password

2005-2-1 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
shella
初级用户




积分 187
发帖 31
注册 2004-8-30
状态 离线
『第 6 楼』:  

用 wbat 即可假设你的这个批处理文件名是 password.bat需要如下命令call w.bat box @password.bat:ddddd此处写其他代码,输入的内容已存入变量%password%:ddddd请输入密码[$password,9,P]::此方法的缺陷 需要两个文件 wbat 和 w.bat 另外需要放入虚拟内存盘中 因为有文件写入操作

2005-2-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mtx
初级用户




积分 187
发帖 21
注册 2005-1-22
状态 离线
『第 7 楼』:  



  Quote:
以下是引用shella在2005-2-2 1:24:58的发言:

用 wbat 即可
假设你的这个批处理文件名是 password.bat
需要如下命令
call w.bat box @password.bat:ddddd
此处写其他代码,输入的内容已存入变量%password%
:ddddd
请输入密码
[$password,9,P]
::
此方法的缺陷 需要两个文件 wbat 和 w.bat
另外需要放入虚拟内存盘中 因为有文件写入操作

能详细的讲一下wbat 和 w.bat的用法吗?wbat 和 w.bat 是在怎样的环境下用的呢?

2005-2-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
shella
初级用户




积分 187
发帖 31
注册 2004-8-30
状态 离线
『第 8 楼』:  

wbat 是一个dos下的对话框制作软件 (不能用于 2k/XP 至于98能不能我不知道)w.bat 是 wbat的一个高级用法 用于把输入的内容赋值给变量使用参数可以看看我的帖子http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardID=12&ID=14979&page=1

2005-2-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mtx
初级用户




积分 187
发帖 21
注册 2005-1-22
状态 离线
『第 9 楼』:  



  Quote:
以下是引用shella在2005-2-3 20:23:27的发言:

wbat 是一个dos下的对话框制作软件 (不能用于 2k/XP 至于98能不能我不知道)
w.bat 是 wbat的一个高级用法 用于把输入的内容赋值给变量
使用参数可以看看我的帖子
http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardID=12&ID=14979&page=1

请问wbat 如何下载,能用于制作启动盘吗?

2005-2-5 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Denver
初级用户




积分 123
发帖 10
注册 2005-1-26
状态 离线
『第 10 楼』:  

我的批处理不对么?



又不需要任何外部命令。



2005-2-6 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
shella
初级用户




积分 187
发帖 31
注册 2004-8-30
状态 离线
『第 11 楼』:  

http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardid=12&id=14979
在第一楼帖子的最后面
可以用于启动盘的
不过注意 如果要使用高级方式 就要把这些文件拷到虚拟内存盘运行
因为需要进行写盘操作

2005-2-7 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenhui530
高级用户





积分 772
发帖 273
注册 2004-10-23
状态 离线
『第 12 楼』:  

可以在AUTOEXEC。BAT里编辑然后调用WBAT可以实现密码访问
但是缺点是只安全性还是不高。一但别人用编辑软件打开一开AUTOEXEC。BAT就明白了



http://www.msfans.net/bbs/
2005-2-15 00:00
查看资料  发送邮件  发短消息 网志  OICQ (77740821)  编辑帖子  回复  引用回复
shella
初级用户




积分 187
发帖 31
注册 2004-8-30
状态 离线
『第 13 楼』:  

用 bat2com把另外一个保存密码处理的bat转成com文件然后在 autoexec.bat 里面调用

2005-2-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 14 楼』:  

将以下存成一个批处理文件.再跟据需要修改即可.
@echo off
:: 设置初使密码只能使用小写字母和数字
set pass=chenallqq368178720
:: 输入密码并验证
:pass
cls
echo.
echo.   
echo.   Please input your password!
echo.
echo.   Password:%xxx%
choice /c:abcdefghijklmnopqrstuvwxyz1234567890 /N
if errorlevel 1 set chk=a
if errorlevel 2 set chk=b
if errorlevel 3 set chk=c
if errorlevel 4 set chk=d
if errorlevel 5 set chk=e
if errorlevel 6 set chk=f
if errorlevel 7 set chk=g
if errorlevel 8 set chk=h
if errorlevel 9 set chk=i
if errorlevel 10 set chk=j
if errorlevel 11 set chk=k
if errorlevel 12 set chk=l
if errorlevel 13 set chk=m
if errorlevel 14 set chk=n
if errorlevel 15 set chk=o
if errorlevel 16 set chk=p
if errorlevel 17 set chk=q
if errorlevel 18 set chk=r
if errorlevel 19 set chk=s
if errorlevel 20 set chk=t
if errorlevel 21 set chk=u
if errorlevel 22 set chk=v
if errorlevel 23 set chk=w
if errorlevel 24 set chk=x
if errorlevel 25 set chk=y
if errorlevel 26 set chk=z
if errorlevel 27 set chk=1
if errorlevel 28 set chk=2
if errorlevel 29 set chk=3
if errorlevel 30 set chk=4
if errorlevel 31 set chk=5
if errorlevel 32 set chk=6
if errorlevel 33 set chk=7
if errorlevel 34 set chk=8
if errorlevel 35 set chk=9
if errorlevel 36 set chk=0
set input=%input%%chk%
set xxx=%xxx%*
:: 密码检验,如果正确则退出
if #%pass%==#%input% goto end
goto pass
:end
运行后如果依次输入了chenallqq368178720就会退出,否则.........
这是密码检验的批处理,可以修改一下变成设置密码的批处理.

[此贴子已经被作者于2005-2-24 15:07:05编辑过]






QQ:366840202
http://chenall.net
2005-2-24 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 15 楼』:  



  Quote:
以下是引用Denver在2005-2-6 0:03:34的发言:
我的批处理不对么?



又不需要任何外部命令。

这没命令没有什么不对,只是这个只能在WINDOWS 2000以上的系统中使用.



QQ:366840202
http://chenall.net
2005-2-24 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: