中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-19 00:36
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » ghost前要求输入密码 查看 3,260 回复 22
楼 主 ghost前要求输入密码 发表于 2007-06-07 23:26 ·  中国 福建 福州 电信
新手上路
积分 18
发帖 8
注册 2007-06-07 22:55
19年会员
UID 90618
性别 男
状态 离线
办公室一台公用电脑,我装了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的代码。先谢了!
2 发表于 2007-06-08 01:21 ·  中国 黑龙江 哈尔滨 电信
高级用户
★★★
积分 760
发帖 357
注册 2005-10-10 22:33
20年会员
UID 43332
状态 离线
GHOST支持加密备份!
所以无须在弄什么加密的要求了!
3 发表于 2007-06-08 06:14 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
Originally posted by hdyue at 2007-6-7 23:26:
办公室一台公用电脑,我装了XP和DOS双系统,并做了一个全自动GHOST的批处理文件。太方便了因此系统经常被人进入DOS随意GHOST还原。我想在GHOST还原前 ...

set/p a=password: 只能用于cmd,dos需用choice命令。
Windows 一键还原
http://www.yjhy.com
4 发表于 2007-06-08 06:15 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
Originally posted by 0451lym at 2007-6-8 01:21:
GHOST支持加密备份!
所以无须在弄什么加密的要求了!

两种密码所要达到的目的是有不同的。个人以为。
Windows 一键还原
http://www.yjhy.com
5 发表于 2007-06-08 11:23 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
楼上说得很清楚了,用CHOICE命令也很强的。
欢迎你到批处理爱好者联盟QQ群:18023953
6 发表于 2007-06-08 20:01 ·  中国 广西 桂林 电信
新手上路
积分 12
发帖 5
注册 2007-06-08 13:31
19年会员
UID 90662
性别 男
状态 离线
现在还有几个办公室的会DOS?你不就让菜单一个只进DOS,一个进系统不就得了?
7 问题未解决 发表于 2007-06-09 00:42 ·  中国 福建 福州 电信
新手上路
积分 18
发帖 8
注册 2007-06-07 22:55
19年会员
UID 90618
性别 男
状态 离线
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

哪位大虾能帮我完整解答。谢了!
8 发表于 2007-06-09 07:58 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
choice是外部命令。
Windows 一键还原
http://www.yjhy.com
9 发表于 2007-06-09 08:22 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
好像choice只能输入一个字符。不理想,输入长密码,建议用wbat。
找到了说明,可看看。
------------------------
:box输入框说明

~[$变量,长度,参数]~ 此格式表示输入框 输入的内容会被复制到~%%变量%%~

其中的~长度~和~参数~都可以被忽略

其中的~长度~表示最多能输入多少个字符 如 ~[$变量,2]~ 则只能输入2个字符

如果~长度~被忽略 如 ~[$变量 ]~ 此时的长度为方括号的大小

参数包括
U 始终显示大写字母
P 密码输入框 显示的是 ***
! 除非按ESC关闭窗口 否则必须输入不能为空

如 ~[$password,9,P!]~

表示必须要输入最多9位的密码 输入得值存到%%password%%里面

::
Windows 一键还原
http://www.yjhy.com
10 发表于 2007-06-09 17:37 ·  中国 福建 福州 电信
新手上路
积分 18
发帖 8
注册 2007-06-07 22:55
19年会员
UID 90618
性别 男
状态 离线
choice确实是只能输入一个字符,但可以定义在第几位,也不错。问题的关键在于用什么内部命令来实现密码输入。我分不清哪些是内部命令哪些是外部命令。我试了不止这两种密码语句,结果在纯DOS下都不执行密码语句部分。我对密码强度不要求,只要有密码就行。

哪位大虾帮帮忙。谢了!
11 发表于 2007-06-09 17:41 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
简单讲,只要有command,就能执行的命令就是内部命令,比如dir, copy 等。需要另外专门文件才可执行的,是外部命令,比如format, fdisk,attrib等。
Windows 一键还原
http://www.yjhy.com
12 发表于 2007-06-09 17:44 ·  中国 福建 福州 电信
新手上路
积分 18
发帖 8
注册 2007-06-07 22:55
19年会员
UID 90618
性别 男
状态 离线
lianjiang2004,你好!

我的问题是不是在纯DOS下无法实现?

能不能帮忙写一个?我对密码强度不要求,只要有密码就行。
13 发表于 2007-06-09 17:50 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
用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就会退出,否则.........
这是密码检验的批处理,可以修改一下变成设置密码的批处理.
Windows 一键还原
http://www.yjhy.com
14 发表于 2007-06-09 18:06 ·  中国 福建 福州 电信
新手上路
积分 18
发帖 8
注册 2007-06-07 22:55
19年会员
UID 90618
性别 男
状态 离线
lianjiang2004,你好!谢谢你。

你提供的这段代码我也见过,但未试过。原因是我用的代码那么简单,运行后都不行,这么复杂就更不敢试了,不过我会试一下的。谢谢。

不知道我的问题讲清楚了没有。我的意思是,在出现启动双菜单选择DOS后,运行一个批处理进行GHOST前,希望有个简单的密码,就是说不希望被人随意GHOST。

我在批处理中用过choice命令<详见7楼>,执行批处理时也是不出现密码部分,直接执行后续语句,什么原因使密码语句被跳漏过去呢?

帮帮忙。能否给个完整语句,谢了。
15 发表于 2007-06-09 18:31 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
把你写的代码贴出来。
里面放上choice的可执行文件了吗?
Windows 一键还原
http://www.yjhy.com
论坛跳转: