中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 14:01
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教一个if的用法 查看 984 回复 12
楼 主 请教一个if的用法 发表于 2009-02-27 23:16 ·  中国 湖北 武汉 电信
初级用户
积分 24
发帖 20
注册 2009-01-14 10:15
17年会员
UID 136626
性别 男
状态 离线
我想做一个这样的批处理
选择1 就跳转到 A
选择2 就跳转到 B
选择3 就跳转到 C
选择4 就跳转到 D
输入其他的任何东西都 跳转到 end

我是这样写的
@echo off
:start
set /p a=请输入你的号:
if /i "%a%"=="1" goto a
if /i "%a%"=="2" goto b
if /i "%a%"=="3" goto c
if /i "%a%"=="4" goto d

输入其他的任何东西都 跳转到 end
这个怎么写拉

请高手赐教
2 发表于 2009-02-27 23:52 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
@echo off
Setlocal Enabledelayedexpansion
set n=0
for %%i in (a b c d) do (
set /a n+=1
set _!n!=%%i
)
set /p inpt=请输入你的号(1-4):
for /l %%a in (1 1 4) do (
if "%inpt%"=="%%a" (goto :!_%%a!)
)
goto :end
:a
echo a&pause&goto :eof
:b
echo b&pause&goto :eof
:c
echo c&pause&goto :eof
:d
echo d&pause&goto :eof
:end
echo end&pause&goto :eof
3 发表于 2009-02-27 23:59 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
也来一个:

@echo off&setlocal enabledelayedexpansion
set "code= abcd"
set /p input=请输入你的选择(a b c d):
for /l %%a in (1,1,4) do if /i "!code:~%%a,1!" equ "%input%" goto %%a
goto :end
......
批处理之家新域名:www.bathome.net
4 发表于 2009-02-28 03:34 ·  中国 湖北 武汉 电信
初级用户
积分 24
发帖 20
注册 2009-01-14 10:15
17年会员
UID 136626
性别 男
状态 离线
谢谢
太谢谢了
虽然我不太看的懂
5 发表于 2009-02-28 04:51 ·  中国 江苏 苏州 电信
新手上路
积分 1
发帖 1
注册 2009-02-26 09:58
17年会员
UID 140009
性别 男
状态 离线
也学习学习~
6 发表于 2009-02-28 12:30 ·  中国 广东 深圳 电信
初级用户
积分 75
发帖 26
注册 2007-04-01 12:39
19年会员
UID 83623
性别 男
状态 离线
Originally posted by mn960mn at 2009-2-28 03:34 AM:
谢谢
太谢谢了
虽然我不太看的懂


两条语句都是这样写的,先写好假如是ABCD的情况下的跳转,
如果输入的不是这四个字母,就进入下一条语句:goto end
7 发表于 2009-02-28 14:24 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
21年会员
UID 44210
状态 离线
上面写得是不是太高深了点
@echo off
:start
set /p input=请输入你的选择(1 2 3 4):
if /i "%input%"=="1" goto a
if /i "%input%"=="2" goto b
if /i "%input%"=="3" goto c
if /i "%input%"=="4" goto d
goto :end
......
8 发表于 2009-02-28 23:00 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
这样也行吧
找不到1234就goto :eof
echo %a%|findstr /c:"1" /c:"2" /c:"3" /c:"4"||goto :eof

[ Last edited by yishanju on 2009-2-28 at 23:04 ]

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
9 发表于 2009-02-28 23:26 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
@echo off
:start
set /p a=请输入你的号:
if /i "%a%"=="1" (goto a) else (goto e)
if /i "%a%"=="2" (goto b) else (goto e)
if /i "%a%"=="3" (goto c) else (goto e)
if /i "%a%"=="4" (goto d) else (goto e)
goto :eof

:a
echo a
pause
goto :eof

:b
echo b
pause
goto :eof

:e
echo e
pause
goto :eof

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
10 发表于 2009-03-01 00:47 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
::这样也可以,但是不知道为什么选择其它的退出时,不见了提示符。
::
@echo off
if "%1"=="选错了" goto :other
set/p in=输入1/2/3
goto :sub%in% &%0 选错了

:sub1
echo 选择1
goto :end

:sub2
echo 选择2
goto :end

:sub3
echo 选择3
goto :end

:other
echo 选择了其它的

:end
echo End
pause
exit/b
精简
=> 个人网志
11 学习三楼的 发表于 2009-03-01 00:53 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
set /p in=请输入你的选择(a b c d):
for %%a in (a,b,c,d) do if /i "in" equ "%%a" goto :sub%%a
goto :end
:suba
...
:subb
...
:subc
...
:subd
...
:end
...
精简
=> 个人网志
12 发表于 2009-03-02 01:21 ·  中国 湖北 武汉 电信
新手上路
积分 12
发帖 5
注册 2009-01-15 09:52
17年会员
UID 136718
性别 男
状态 离线
懂了
懂了
13 发表于 2009-03-02 11:34 ·  中国 吉林 延边朝鲜族自治州 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
Originally posted by mn960mn at 2009-2-27 23:16:
@echo off
:start
set /p a=请输入你的号:
if /i "%a%"=="1" goto a
if /i "%a%"=="2" goto b
if /i "%a%"=="3" goto c
if /i "%a%"=="4" goto d

输入其他的任何东西都 跳转到 end ...

你把:end标签放到这些if 的后面就可以。
@echo off
:start
set /p a=请输入你的号:
if /i "%a%"=="1" goto a
if /i "%a%"=="2" goto b
if /i "%a%"=="3" goto c
if /i "%a%"=="4" goto d
:end
。。。。
:a
。。。

[ Last edited by Hanyeguxing on 2009-3-2 at 11:35 ]
论坛跳转: