Board logo

标题: (问题尚未解决) 在批处理中是通过怎样的命令实现人机对话 [打印本页]

作者: mtx     时间: 2005-1-29 00:00    标题: (问题尚未解决) 在批处理中是通过怎样的命令实现人机对话

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

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


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



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



能达到您所说的效果。



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


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



作者: mtx     时间: 2005-2-1 00:00
我用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%
程序大概是这样,可以实现目的,但很令人不爽,密码不是一步输完的.不知道那位有好方法?
作者: Denver     时间: 2005-2-1 00:00
@echo off

:set_password

set /p password=

set userpw=%userpw%%password%

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


  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 是在怎样的环境下用的呢?
作者: shella     时间: 2005-2-3 00:00
wbat 是一个dos下的对话框制作软件 (不能用于 2k/XP 至于98能不能我不知道)w.bat 是 wbat的一个高级用法 用于把输入的内容赋值给变量使用参数可以看看我的帖子http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardID=12&ID=14979&page=1
作者: mtx     时间: 2005-2-5 00:00


  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 如何下载,能用于制作启动盘吗?
作者: Denver     时间: 2005-2-6 00:00
我的批处理不对么?



又不需要任何外部命令。


作者: shella     时间: 2005-2-7 00:00
http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardid=12&id=14979
在第一楼帖子的最后面
可以用于启动盘的
不过注意 如果要使用高级方式 就要把这些文件拷到虚拟内存盘运行
因为需要进行写盘操作
作者: chenhui530     时间: 2005-2-15 00:00
可以在AUTOEXEC。BAT里编辑然后调用WBAT可以实现密码访问
但是缺点是只安全性还是不高。一但别人用编辑软件打开一开AUTOEXEC。BAT就明白了
作者: shella     时间: 2005-2-16 00:00
用 bat2com把另外一个保存密码处理的bat转成com文件然后在 autoexec.bat 里面调用
作者: chenall     时间: 2005-2-24 00:00
将以下存成一个批处理文件.再跟据需要修改即可.
@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编辑过]



作者: chenall     时间: 2005-2-24 00:00


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



又不需要任何外部命令。

这没命令没有什么不对,只是这个只能在WINDOWS 2000以上的系统中使用.
作者: lhz95418005     时间: 2005-2-25 00:00
看懂了一点[em04]
作者: 不说话小子     时间: 2005-3-29 00:00
请用GET

  Quote:
DOSBIOS专区http://www.orthopedicscn.com/cgi-bin/bbs/bbs.cgi?id=weikiss(当前)http://my.coolala.net/bbs.php?a=dosbios (新,还没有数据)