批处理高手请进

这个对不对?ECHOOFFSETUSERCHOICE=请输入密码IF"USERCHOICE"==123(我的密码)GOTOAECHO密码错误PAUSEEXIT:ASTAR... 这个对不对?
ECHO OFF
SET USERCHOICE = 请输入密码
IF "USERCHOICE" == 123(我的密码) GOTO A
ECHO 密码错误
PAUSE
EXIT
:A START …
展开
 我来答
CyraSafia
2009-01-06 · TA获得超过1940个赞
知道大有可为答主
回答量:945
采纳率:0%
帮助的人:1286万
展开全部
一些细节问题

1.第一句echo off之前要加@,即
@echo off,否则这句有回显

2.不要随便加空格,批处理不会自动去掉空格
比如set a=123是将变量"a"赋值为"123"
但是set a = 123的效果是将变量"a "赋值为" 123"

3.批处理中其实没有真正的变量,而是类似于vc中的宏
在执行时,其实是由cmd将定义过的变量置换为定义的值,然后再执行
调用变量的格式是两边加%

以下面两句为例:
set a=123
if %a%==123 echo 相等!
他的实际执行过程是:
a.将a的值定义为123
b.将if语句中的%a%替换成定义过的值
c.执行替换过的语句 if 123==123 echo 相等!
如果一边加了双引号,而另一边不加的话,肯定是始终不相等的

其实如果不加引号的话是可以比较成功的,但是由于批处理的工作机制,如果a这个变量没有定义过的话,上面的第二句就会变成
if ==123 echo 相等!
这样就违背了if语句的语法,会产生报错
而加上双引号就会变成
if ""=="123 echo 相等!
就可以正常进行比较了

4.set语句
要达到输出一行提示,并且从命令行读取一行输入赋值给变量的效果,必须使用/p参数。正确的语法是
set /p userchoice=请输入密码
注意等号后面无需加空格

5.goto:A和goto A都可以
但是:A必须一句一行
也就是必须写成
:A
start

综上,可以做如下修改
@echo off
set /p userchoice=请输入密码:
if "userchoice"=="123" goto:A
echo 密码错误
pause
exit
:A
start ...
百度网友b9f2d93
2009-01-06 · TA获得超过994个赞
知道大有可为答主
回答量:1692
采纳率:0%
帮助的人:1202万
展开全部
ECHO OFF
SET/P USERCHOICE = 请输入密码
IF "USERCHOICE"=="123" GOTO A
ECHO 密码错误
PAUSE 1>nul 2>nul
EXIT
:A
START …
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
314ccp
2009-01-06 · TA获得超过5625个赞
知道大有可为答主
回答量:1497
采纳率:0%
帮助的人:2154万
展开全部
这个才对!

@ECHO OFF
SET/P USERCHOICE = 请输入密码
IF "%USERCHOICE%"=="123" GOTO A
ECHO 密码错误
PAUSE >nul
EXIT
:A
START …
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式