标题: ghost前要求输入密码
[打印本页]
作者: hdyue
时间: 2007-6-7 23:26
标题: ghost前要求输入密码
办公室一台公用电脑,我装了XP和DOS双系统,并做了一个全自动GHOST的批处理文件。太方便了因此系统经常被人进入DOS随意GHOST还原。我想在GHOST还原前要求输入密码<能糊一些人>。批处理代码如下:
@echo off
set a=
set/p a=password:
if /i "%a%"=="123" goto aa
exit
::以下部分代替GHOST带参数命令
:aa
echo 你好
pause
以上语句在WINDOWS下执行的很好。可在DOS下却不执行密码输入部分。请大虾们帮忙原因何在?是不是要先加载什么才能在DOS下执行密码输入部分?
请求一个需要密码才能执行GHOST的代码。先谢了!
作者: 0451lym
时间: 2007-6-8 01:21
GHOST支持加密备份!
所以无须在弄什么加密的要求了!
作者: lianjiang2004
时间: 2007-6-8 06:14
Quote: |
Originally posted by hdyue at 2007-6-7 23:26:
办公室一台公用电脑,我装了XP和DOS双系统,并做了一个全自动GHOST的批处理文件。太方便了因此系统经常被人进入DOS随意GHOST还原。我想在GHOST还原前 ... |
|
set/p a=password: 只能用于cmd,dos需用choice命令。
作者: lianjiang2004
时间: 2007-6-8 06:15
Quote: |
Originally posted by 0451lym at 2007-6-8 01:21:
GHOST支持加密备份!
所以无须在弄什么加密的要求了! |
|
两种密码所要达到的目的是有不同的。个人以为。
作者: htysm
时间: 2007-6-8 11:23
楼上说得很清楚了,用CHOICE命令也很强的。
作者: yyuunnnn
时间: 2007-6-8 20:01
现在还有几个办公室的会DOS?你不就让菜单一个只进DOS,一个进系统不就得了?
作者: hdyue
时间: 2007-6-9 00:42
标题: 问题未解决
2楼的话我明白,但GHOST的密码是固定的。能更改密码吗?告诉我在哪里更改。
3楼的话我不大明白。因为我也试过以下这段代码。效果也是不执行密码部分,直接执行:aa部分。
@echo off
set choice=
set /p choice= password:
IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
if /i "%choice%"=="h" goto aa
exit
::以下部分代替GHOST带参数命令
:aa
echo 你好
pause
哪位大虾能帮我完整解答。谢了!
作者: lianjiang2004
时间: 2007-6-9 07:58
choice是外部命令。
作者: lianjiang2004
时间: 2007-6-9 08:22
好像choice只能输入一个字符。不理想,输入长密码,建议用wbat。
找到了说明,可看看。
------------------------
:box输入框说明
~[$变量,长度,参数]~ 此格式表示输入框 输入的内容会被复制到~%%变量%%~
其中的~长度~和~参数~都可以被忽略
其中的~长度~表示最多能输入多少个字符 如 ~[$变量,2]~ 则只能输入2个字符
如果~长度~被忽略 如 ~[$变量 ]~ 此时的长度为方括号的大小
参数包括
U 始终显示大写字母
P 密码输入框 显示的是 ***
! 除非按ESC关闭窗口 否则必须输入不能为空
如 ~[$password,9,P!]~
表示必须要输入最多9位的密码 输入得值存到%%password%%里面
::
作者: hdyue
时间: 2007-6-9 17:37
choice确实是只能输入一个字符,但可以定义在第几位,也不错。问题的关键在于用什么内部命令来实现密码输入。我分不清哪些是内部命令哪些是外部命令。我试了不止这两种密码语句,结果在纯DOS下都不执行密码语句部分。我对密码强度不要求,只要有密码就行。
哪位大虾帮帮忙。谢了!
作者: lianjiang2004
时间: 2007-6-9 17:41
简单讲,只要有command,就能执行的命令就是内部命令,比如dir, copy 等。需要另外专门文件才可执行的,是外部命令,比如format, fdisk,attrib等。
作者: hdyue
时间: 2007-6-9 17:44
lianjiang2004,你好!
我的问题是不是在纯DOS下无法实现?
能不能帮忙写一个?我对密码强度不要求,只要有密码就行。
作者: lianjiang2004
时间: 2007-6-9 17:50
用choice就是纯dos下的。
刚刚查了个帖子,也是用choice的,不过能实现验证多位密码。供参考。
-----------------------------------------
将以下存成一个批处理文件.再跟据需要修改即可.
@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就会退出,否则.........
这是密码检验的批处理,可以修改一下变成设置密码的批处理.
作者: hdyue
时间: 2007-6-9 18:06
lianjiang2004,你好!谢谢你。
你提供的这段代码我也见过,但未试过。原因是我用的代码那么简单,运行后都不行,这么复杂就更不敢试了,不过我会试一下的。谢谢。
不知道我的问题讲清楚了没有。我的意思是,在出现启动双菜单选择DOS后,运行一个批处理进行GHOST前,希望有个简单的密码,就是说不希望被人随意GHOST。
我在批处理中用过choice命令<详见7楼>,执行批处理时也是不出现密码部分,直接执行后续语句,什么原因使密码语句被跳漏过去呢?
帮帮忙。能否给个完整语句,谢了。
作者: lianjiang2004
时间: 2007-6-9 18:31
把你写的代码贴出来。
里面放上choice的可执行文件了吗?
作者: hdyue
时间: 2007-6-9 18:43
lianjiang2004,你好!
我的代码已经贴了两个了<1楼和7楼>。取名为222.bat放在C盘根目录下,进入DOS后运行222,都是不出现密码部分,直接执行后续语句,即直接显示welcome!。
你的意思是要把choice.exe也复制到C盘根目录下就能完整执行222.bat?
222.bat:
@echo off
set choice=
set /p choice= password:
IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
if /i "%choice%"=="h" goto aa
exit
::以下部分代替GHOST带参数命令
:aa
echo welcome!
pause
作者: lianjiang2004
时间: 2007-6-9 18:51
错误原因3楼早就讲过了。不再重复。
外部命令需与批处理在同一路径下。
还不能理解的话,自己看dos基础,补课吧。
作者: lianjiang2004
时间: 2007-6-9 18:52
理解有难度的话,建议用别人现成的软件。学会后再自己写。
作者: hdyue
时间: 2007-6-12 00:17
标题: 问题已解决
问题我自己已解决。用的是网上查找的 maotao 写的一段代码,修改后使用。
谢谢 maotao! 也谢谢 lianjiang2004 的指教!用 choice 难以实现,找choice.com也找得半死,最后从98压缩包里找出来,没用上。
作者: lianjiang2004
时间: 2007-6-12 06:20
dos启动盘里就有choice,呵呵。
作者: feelam
时间: 2007-8-6 23:08
Quote: |
Originally posted by hdyue at 2007-6-12 12:17 AM:
问题我自己已解决。用的是网上查找的 maotao 写的一段代码,修改后使用。
谢谢 maotao! 也谢谢 lianjiang2004 的指教!用 choice 难以实现,找choice.com也找得半死,最后从98压缩包里找出来,没用上。 |
|
大哥 问题解决你倒是贴个如何解决的方法出来啊拜托;)
作者: minchengan
时间: 2007-8-14 12:24
用这个更好:
http://www.cn-dos.net/forum/viewthread.php?tid=18848&fpage=2
作者: terse
时间: 2007-8-15 21:26
用WBAT的
reboot 外部命令 重启机器的
@echo off
cls
WBAT CLS (+cyan on black)
:start
set pass=
call w.bat menu
if errorlevel 100 goto end
if %?%#==2# goto end
if %pass%#==123# goto ghost
goto start
:ghost
GHOST带参数命令
goto end
:end
reboot
::
:menu "【DOS启动盘】"[x]
===================================
请输入密码 [$pass,5,p]
[继续(&E)] [?取消(&Q)]
===================================
::