中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-13 23:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]着急!为什么goto 语句不好使! 查看 810 回复 7
楼 主 [求助]着急!为什么goto 语句不好使! 发表于 2007-11-07 08:47 ·  中国 黑龙江 大庆 联通
高级用户
★★
积分 547
发帖 261
注册 2006-04-15 16:50
20年会员
UID 53887
状态 离线
我是一个新手,自己参考网写了这个批处理,可是总是出现问题,请看如下
@echo off
mode con cols=55 lines=20
::mode con cols=20 lines=20&color c,也行,
color 2e
::先背景,后前景
title WINXP服务自动优化
pause


:house
@echo ====================================================
@echo.
@echo 菜单选择
@echo 1.逐步优化服务
@echo 2.快速优化服务
@echo 3.恢复服务默认值
@echo.
@echo ====================================================
set /p menu=请输入菜单选项(1、2或3)
if %menu% equ 1 goto :youhua
if %menu% equ 2 goto :fast
if %menu% equ 3 goto :default

:youhua
cls
@echo ====================================================
@echo.
@echo title 逐步优化服务
@echo 列出了微软对--- 服务功能 ---的详细描述
@echo 列出了服务的--- 依存和被依存 ---关系
@echo 列出了服务的--- 默认值 ---和--- 优化后的值 ---
@echo.
@echo ====================================================
@echo 中途停止程序运行可按“Ctrl+C”组合键
pause
cls
@echo 显示名称:Alerter
@echo 微软:通知所选用户和计算机有关系统管理级警报。如果服务停止,使用管理警报的程序将不会收到它们。
@echo 补充:一般用户不需要传送或接收计算机系统管理来的警示(Administrative Alerts),除非你的计算机用在局域网络上。
@echo 依存:Workstation
@echo 被依存:无
@echo 默认:已禁用
@echo 建议:已禁用
sc config Alerter start= DISABLED
pause
cls


@echo 逐步优化服务已完成
pause
cls
@echo ====================================================
@echo.
@echo 1.返回上一级菜单
@echo 2.退出
@echo.
@echo ====================================================
set /p menu1=请输入菜单选择项(1或2)
if %menu1% equ 1
goto :house
if %menu1% equ 2
goto :eof

我的问题是在我输入1,应该返回主菜单啊!可是现在输入1还是2都是退出,我的错误在哪里!
2 发表于 2007-11-07 09:00 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
f %menu% equ 3 goto :default

:youhua

上面两行直接最好有个判断,如果输入的值不是1、2、3中的任何一个的话,就会自动执行youhua这个标签了

if %menu1% equ 1
goto :house
if %menu1% equ 2
goto :eof

这里也有一样 的问题,输入的值非1、非2 的话,也会自动退出的。
3 如何输写判断呢? 发表于 2007-11-07 09:06 ·  中国 黑龙江 大庆 大庆中基石油通信建设有限公司
高级用户
★★
积分 547
发帖 261
注册 2006-04-15 16:50
20年会员
UID 53887
状态 离线
f %menu% equ 3 goto :default

:youhua

上面两行直接最好有个判断,如果输入的值不是1、2、3中的任何一个的话,就会自动执行youhua这个标签了

if %menu1% equ 1
goto :house
if %menu1% equ 2
goto :eof

这里也有一样 的问题,输入的值非1、非2 的话,也会自动退出的。

但是我输入的是1啊!为什么不执行goto :house呢?
4 发表于 2007-11-07 09:14 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
因为你把goto写在if的下面一行了,要同一行

if %menu1% equ 1 goto :house
if %menu1% equ 2 goto :eof
5 发表于 2007-11-07 09:47 ·  中国 黑龙江 大庆 大庆中基石油通信建设有限公司
高级用户
★★
积分 547
发帖 261
注册 2006-04-15 16:50
20年会员
UID 53887
状态 离线
谢谢,解决了。
6 发表于 2007-11-07 10:43 ·  中国 北京 朝阳区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
最好用
IF "menu1"=="1" goto :house
万一输入 &|什么的就可能
7 发表于 2007-11-11 03:21 ·  中国 广东 深圳 电信
初级用户
★★
积分 167
发帖 95
注册 2007-05-06 09:19
19年会员
UID 87628
性别 男
状态 离线
Originally posted by knoppix7 at 2007-11-7 10:43 AM:
最好用
IF "menu1"=="1" goto :house
万一输入 &|什么的就可能

会怎么样???能解释一下吗??
8 发表于 2007-11-11 09:48 ·  中国 甘肃 兰州 安宁区 电信
新手上路
积分 12
发帖 6
注册 2007-11-07 23:35
18年会员
UID 102020
性别 男
状态 离线
哈哈哈,高手多阿
论坛跳转: