中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 在下写了这么一个文件,可是运行不成功,请版主指点。
作者:
标题: 在下写了这么一个文件,可是运行不成功,请版主指点。 上一主题 | 下一主题
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『楼 主』:  在下写了这么一个文件,可是运行不成功,请版主指点。

@echo off
:0
cls
set /p 密码=    请输入密码:
if "密码"="" goto 0
if "密码"="123" goto 1
echo 输入无效,请重新选择: goto 0

@echo off
:1
echo.
echo ==========================
echo.
echo 1. 打开“优化大师”
echo.
echo 2. 打开“超级兔子”
echo.

set /p a=    请选择...
if "a"="1" goto 1
if "a"="2" goto 2

:1
start C:\Progra~1\Wopti\WoptiUtilities.exe
if errorlevel 1 echo 失败 goto 1
if errlrlevel 0 echo 成功 goto Q

:2
start D:\Progra~1\SuperR~1\MagicSet\MagicSet.exe
if errorlevel 1 echo 失败 goto 1
if errlrlevel 0 echo 成功 goto Q

:Q
exit






以上为文件内容
我想知道为什么会运行不成功呢?哪里的语句错了?
请指教》》》

2007-5-31 13:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

在引用环境变量时,要将环境变量用%括起来,例如:
if "%密码%"=="" ...
if "%a%" == ".." ...



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2007-5-31 13:37
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『第 3 楼』:  

这是我修改过后的内容,运行后无法达到预期效果。
问题一:请问如何做到密码为空、或者非123时跳至0,并且提示输入无效,密码正确(也就是密码为123)时,跳至1。
问题二:if errorlevel 这句命令为什么会没有效果(根本没有看到提示失败或成功)
为什么,用什么命令才能解决以上问题??
请教了》》》


@echo off
:0
cls
set /p 密码=    请输入密码:

if "%密码%"=="" goto 0
if "%密码%"=="123" goto 1
echo 密码输入无效

@echo off
:1
echo.
echo ==========================
echo.
echo 1. 打开“优化大师”
echo.
echo 2. 打开“超级兔子”
echo.

set /p 编号=   请选择...
if "%编号%"=="1" goto 2
if "%编号%"=="2" goto 3

:2
start C:\Progra~1\Wopti\WoptiUtilities.exe
if errorlevel 1 echo 失败 goto 1
if errorlevel 0 echo 成功 goto Q
goto Q

:3
start D:\Progra~1\SuperR~1\MagicSet\MagicSet.exe
if errorlevel 1 echo 失败 goto 1
if errorlevel 0 echo 成功 goto Q
goto Q

:Q
exit

2007-5-31 14:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  



  Quote:
]问题一:请问如何做到密码为空、或者非123时跳至0,并且提示输入无效,密码正确(也就是密码为123)时,跳至1。

if "%密码%" neq "123" (echo 输入无效...&goto :0) else (goto :1)

  Quote:
问题二:if errorlevel 这句命令为什么会没有效果(根本没有看到提示失败或成功)
为什么,用什么命令才能解决以上问题??
请教了》》》

我这里测试有效果。

另外,你的" if errorlevel 1 echo 失败 goto 1 "的写法不正确,应该这样“if errorlevel 1 echo 失败&pause&goto 1”

2007-5-31 14:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『第 5 楼』:  

版主
我是初学者,不太看的懂
一:可以解释一下    if "%密码%" neq "123" (echo 输入无效...&goto :0) else (goto :1)
中的  nep     &     else   是什么意思吗   加括号和没有括号有什么区别?

二:if errorlevel 1 echo 失败&pause&goto 1     这里的echo 失败&pause&goto 1是不是指如果返回码为1 ,则提示失败,然后暂停,按任意键继续跳至1呢?这里&是什么意思,我刚开始尝试过用管道命令(| ) 为什么会没用?

2007-5-31 15:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 6 楼』:  

有语法错误,%都没有加

2007-5-31 17:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by 371770923 at 2007-5-31 15:56:
我是初学者,不太看的懂
一:可以解释一下    if "%密码%" neq "123" (echo 输入无效...&goto :0) else (goto :1)
中的  nep     &     else   是什么意思吗   加括号和没有括号有什么区别?

二:if errorlevel 1 echo 失败&pause&goto 1     这里的echo 失败&pause&goto 1是不是指如果返回码为1 ,则提示失败,然后暂停,按任意键继续跳至1呢?这里&是什么意思,我刚开始尝试过用管道命令(| ) 为什么会没用?  

1、neq 是 not equal 的意思,就是不等于,见 if /? 。
    if …… else …… 表示如果……否则…… 。
    这里有else在后面,需要加括号,否则出错。

2、if errerlevel 1 echo 失败&pause&goto 1 表示如果返回码(errorlevel)大于等于1,就执行后面的(echo 是失败&pause&goto 1)。

& 和 | 的用法见这里:http://www.cn-dos.net/forum/viewthread.php?tid=30985

2007-5-31 17:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『第 8 楼』:  

非常感谢版主和各位论坛的朋友?

2007-6-1 15:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『第 9 楼』:  

根据版主指导,我有写了一些文件,本想把所有软件都写进去的,中途测试了一下,失败

我检查过好几次,都看不出是那里的问题,请指教:

问题一:请问为何只能打开"优化大师"和"超级兔子"

问题二:为何无法打开相应的软件呢?

问题三:请问是我的语法用错了吗?错在哪里?为什么会错?应该用什么语句或命令呢?

问题四:请问  goto .... (是不是应该按字母的顺序排列? 如果是,是该按升序还是降序?)

请指教!!!!!!!!!!              谢谢了!!!!!!!!!

本来已经打包好了,却发现无法上传,还请版主见谅,指导一下,不盛感激!!!!!!!

以下是文件内容:








@echo off
:0
echo =================================
echo.
echo        欢迎使用本软件
echo.
echo          请输入密码
echo.
echo =================================

set /p 密码=         请输入密码:
if "%密码%" neq "123456" ( cls& echo 密码无效 请重新输入  &goto :0 ) else ( cls&echo 欢迎使用  &goto :1 )

:1
@echo off
echo =================================
echo.
echo     1.办公软件类
echo.
echo     2.优化软件类
echo.
echo     3.游戏类
echo.
echo     4.退出
echo.
echo =================================

set /p nu=         请选择:
if "%nu%"=="1" goto :办公软件
if "%nu%"=="2" goto :优化软件
if "%nu%'=="3" goto :游戏软件
if "%nu%"=="4" goto :退出

:办公软件
@echo off
cls
echo =================================
echo.
echo     1.Microsoft Word
echo.
echo     2.Microsoft Excel
echo.
echo     3.CorelDRAW
echo.
echo     4.ACDSee32
echo.
echo     5.退出
echo.
echo     6.返回主菜单
echo.
echo =================================

set /p nu=       请选择:
if "%nu%"=="1" goto :Word
if "%nu%"=="2" goto :Excel
if "%nu%'=="3" goto :Coreldraw
if "%nu%"=="4" goto :Acdsee32
if "%nu%"=="5" goto :退出
if "%nu%"=="6" goto :1

:Word
start C:\Progra~1\Micros~1\Office\WINWORD.EXE
if errorlevel 1 echo 失败&goto :办公软件
if errorlevel 0 echo 成功&goto :1

:Excel
start C:\Progra~1\Micros~1\Office\EXCEL.EXE
if errorlevel 1 echo 失败&goto :办公软件
if errorlevel 0 echo 成功&goto :1

:Coreldraw
start D:\Progra~1\Corel\Graphics9\Programs\coreldrw.exe
if errorlevel 1 echo 失败&goto :办公软件
if errorlevel 0 echo 成功&goto :1

:Acdsee32
start F:\rjbak\ACDSee32\ACDSee32.exe
if errorlevel 1 echo 失败&goto :办公软件
if errorlevel 0 echo 成功&goto :1

:优化软件
cls
@echo off
echo =================================
echo.
echo     1.优化大师
echo.
echo     2.超级兔子
echo.
echo     3.流氓软件清除大师
echo.
echo     4.超级兔子上网精灵
echo.
echo     5.退出
echo.
echo     6.返回主菜单
echo.
echo =================================

set /p nu=       请选择:
if "%nu%"=="1" goto :优化大师
if "%nu%"=="2" goto :超级兔子
if "%nu%'=="3" goto :流氓软件清除大师
if "%nu%"=="4" goto :超级兔子上网精灵
if "%nu%"=="5" goto :退出
if "%nu%"=="6" goto :1

:优化大师
start C:\Progra~1\Wopti\WoptiUtilities.exe
if errorlevel 1 echo 失败&goto :优化软件
if errorlevel 0 echo 成功&goto :1

:超级兔子
start D:\Progra~1\SuperR~1\MagicSet\MagicSet.exe
if errorlevel 1 echo 失败&goto :优化软件
if errorlevel 0 echo 成功&goto :1

:流氓软件清除大师
start C:\Progra~1\Wopti\WoptiClean.exe
if errorlevel 1 echo 失败&goto :优化软件
if errorlevel 0 echo 成功&goto :1

:超级兔子上网精灵
start D:\Program~1\SuperR~1\MagicSet\iepro.exe
if errorlevel 1 echo 失败&goto :优化软件
if errorlevel 0 echo 成功&goto :1

:游戏软件
@echo off
cls
echo =================================
echo.
echo     1.蜘蛛纸牌
echo.
echo     2.纸牌
echo.
echo     3.空当接龙
echo.
echo     4.扫雷
echo.
echo     5.退出
echo.
echo     6.返回主菜单
echo.
echo =================================

set /p nu=       请选择:
if "%nu%"=="1" goto :蜘蛛纸牌
if "%nu%"=="2" goto :纸牌
if "%nu%'=="3" goto :空当接龙
if "%nu%"=="4" goto :扫雷
if "%nu%"=="5" goto :退出
if "%nu%"=="6" goto :1

:蜘蛛纸牌
start C:\WINDOWS\SYSTEM32\spider.exe
if errorlevel 1 echo 失败&goto :游戏软件
if errorlevel 0 echo 成功&goto :1

:纸牌
start C:\WINDOWS\SYSTEM32\sol.exe
if errorlevel 1 echo 失败&goto :游戏软件
if errorlevel 0 echo 成功&goto :1

:空当接龙
start C:\WINDOWS\SYSTEM32\freecell.exe
if errorlevel 1 echo 失败&goto :游戏软件
if errorlevel 0 echo 成功&goto :1

:扫雷
start C:\WINDOWS\SYSTEM32\winmine.exe
if errorlevel 1 echo 失败&goto :游戏软件
if errorlevel 0 echo 成功&goto :1

:退出
echo 按任意键退出
pause
exit

2007-6-1 15:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『第 10 楼』:  

不好意思,以上文件是我的失误
我写错了一个符号(将   "   写成   '   )花了三四个小时才看出来,实在是不好意思
现在改过来就全都通了,

2007-6-1 16:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 11 楼』:  

if "%nu%"=="3"

2007-6-1 16:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『第 12 楼』:  

补充:
请问如何能做到按任意键退出或按6返回主菜单呢?

set /p nu=    按任意键退出或按6返回主菜单
if "%nu%"==
if "%nu%"=="6" cls&goto :1

2007-6-1 16:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 13 楼』:  

你现在不就是 按6返回主菜单
最好在标签1下加个cls
:1
cls

[ Last edited by terse on 2007-6-1 at 04:14 PM ]

2007-6-1 16:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
371770923
初级用户





积分 50
发帖 19
注册 2007-5-22
状态 离线
『第 14 楼』:  

按6是可以返回1
我觉得这个 ( cls&goto :1 ) 比较理想,因为我后来还加了这个 (echo 欢迎再次使用)
不过没办法做到任意键退出
即使用  ( if "%nu%" neq "6" ( goto :退出 ) else ( cls&echo 欢迎再次使用&goto :1 ) 也需要按回车键才能退出

2007-6-2 08:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: