![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 19:39 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 在下写了这么一个文件,可是运行不成功,请版主指点。 |
| 可打印版本 925 / 13 |
| 第1楼 371770923 | 发表于 2007-05-31 13:24 |
| 初级用户 发帖 19 积分 50 | |
|
在下写了这么一个文件,可是运行不成功,请版主指点。 @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 以上为文件内容 我想知道为什么会运行不成功呢?哪里的语句错了? 请指教》》》 |
|
| 第2楼 Climbing | 发表于 2007-05-31 13:37 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
在引用环境变量时,要将环境变量用%括起来,例如:
if "%密码%"=="" ... if "%a%" == ".." ... |
|
| 第3楼 371770923 | 发表于 2007-05-31 14:05 |
| 初级用户 发帖 19 积分 50 | |
|
这是我修改过后的内容,运行后无法达到预期效果。
问题一:请问如何做到密码为空、或者非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 |
|
| 第4楼 lxmxn | 发表于 2007-05-31 14:45 |
| 版主 发帖 4,938 积分 11,386 | |
]问题一:请问如何做到密码为空、或者非123时跳至0,并且提示输入无效,密码正确(也就是密码为123)时,跳至1。 if "%密码%" neq "123" (echo 输入无效...&goto :0) else (goto :1) 问题二:if errorlevel 这句命令为什么会没有效果(根本没有看到提示失败或成功) 我这里测试有效果。 另外,你的" if errorlevel 1 echo 失败 goto 1 "的写法不正确,应该这样“if errorlevel 1 echo 失败&pause&goto 1” |
|
| 第5楼 371770923 | 发表于 2007-05-31 15:56 |
| 初级用户 发帖 19 积分 50 | |
|
版主
我是初学者,不太看的懂 一:可以解释一下 if "%密码%" neq "123" (echo 输入无效...&goto :0) else (goto :1) 中的 nep & else 是什么意思吗 加括号和没有括号有什么区别? 二:if errorlevel 1 echo 失败&pause&goto 1 这里的echo 失败&pause&goto 1是不是指如果返回码为1 ,则提示失败,然后暂停,按任意键继续跳至1呢?这里&是什么意思,我刚开始尝试过用管道命令(| ) 为什么会没用? |
|
| 第6楼 hulongzhuo | 发表于 2007-05-31 17:04 |
| 中级用户 发帖 135 积分 294 | |
|
有语法错误,%都没有加
|
|
| 第7楼 lxmxn | 发表于 2007-05-31 17:55 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by 371770923 at 2007-5-31 15:56: 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 |
|
| 第8楼 371770923 | 发表于 2007-06-01 15:02 |
| 初级用户 发帖 19 积分 50 | |
|
非常感谢版主和各位论坛的朋友?
|
|
| 第9楼 371770923 | 发表于 2007-06-01 15:28 |
| 初级用户 发帖 19 积分 50 | |
|
根据版主指导,我有写了一些文件,本想把所有软件都写进去的,中途测试了一下,失败
我检查过好几次,都看不出是那里的问题,请指教: 问题一:请问为何只能打开"优化大师"和"超级兔子" 问题二:为何无法打开相应的软件呢? 问题三:请问是我的语法用错了吗?错在哪里?为什么会错?应该用什么语句或命令呢? 问题四:请问 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 |
|
| 第10楼 371770923 | 发表于 2007-06-01 16:01 |
| 初级用户 发帖 19 积分 50 | |
|
不好意思,以上文件是我的失误
我写错了一个符号(将 " 写成 ' )花了三四个小时才看出来,实在是不好意思 现在改过来就全都通了, |
|
| 第11楼 terse | 发表于 2007-06-01 16:11 |
| 银牌会员 发帖 946 积分 2,404 | |
|
if "%nu%"=="3"
|
|
| 第12楼 371770923 | 发表于 2007-06-01 16:11 |
| 初级用户 发帖 19 积分 50 | |
|
补充:
请问如何能做到按任意键退出或按6返回主菜单呢? set /p nu= 按任意键退出或按6返回主菜单 if "%nu%"== if "%nu%"=="6" cls&goto :1 |
|
| 第13楼 terse | 发表于 2007-06-01 16:13 |
| 银牌会员 发帖 946 积分 2,404 | |
|
你现在不就是 按6返回主菜单
最好在标签1下加个cls :1 cls [ Last edited by terse on 2007-6-1 at 04:14 PM ] |
|
| 第14楼 371770923 | 发表于 2007-06-02 08:51 |
| 初级用户 发帖 19 积分 50 | |
|
按6是可以返回1
我觉得这个 ( cls&goto :1 ) 比较理想,因为我后来还加了这个 (echo 欢迎再次使用) 不过没办法做到任意键退出 即使用 ( if "%nu%" neq "6" ( goto :退出 ) else ( cls&echo 欢迎再次使用&goto :1 ) 也需要按回车键才能退出 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |