中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-01 05:42
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教 set 变量输入空格后的判断问题 查看 990 回复 7
楼 主 请教 set 变量输入空格后的判断问题 发表于 2007-01-06 00:59 ·  中国 广东 深圳 电信
初级用户
积分 153
发帖 20
注册 2003-06-12 00:00
23年会员
UID 4904
性别 男
状态 离线
如下:

set choice=
set /p choice= 唔该擒入选项号:
if {%choice%}=={} goto err
if /i %choice%==01 goto game
if /i %choice%==02 goto junk
if /i %choice%==03 goto updata
if /i %choice%==04 goto found
if /i %choice%==05 goto fix
if /i %choice%==06 goto find
if /i %choice%==07 goto replace
if /i %choice%==08 goto copy
if /i %choice%==09 goto del
if /i %choice%==10 goto nomal
if /i %choice%==0 exit

现象是:
输入指定以外的字符时
自动退出了批处理
本来不应该是跳转到 err标签的吗?

[ Last edited by kingshui on 2007-1-6 at 02:00 AM ]
2 发表于 2007-01-06 01:04 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
你写的代码中,输入为空时跳到ERR,代码没有指定其它情况可以跳到ERR。你可以在最后加一句跳到ERR,因为上面全不满足,才可能执行到它。
3 发表于 2007-01-06 01:09 ·  中国 广东 深圳 电信
初级用户
积分 153
发帖 20
注册 2003-06-12 00:00
23年会员
UID 4904
性别 男
状态 离线
呵呵...
谢谢指教...
刚才自己又重新的完整看了一遍自己的代码..
结果就得出你说的结论了...
以前没注意到这个问题...
呵呵...
4 发表于 2007-01-06 01:40 ·  中国 广东 深圳 电信
初级用户
积分 153
发帖 20
注册 2003-06-12 00:00
23年会员
UID 4904
性别 男
状态 离线
另外..
想请问一下...
如果输入的是空格应该怎么判断呢?
5 发表于 2007-01-06 01:51 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

if {%choice%}=={ } goto error
6 发表于 2007-01-06 01:58 ·  中国 广东 深圳 电信
初级用户
积分 153
发帖 20
注册 2003-06-12 00:00
23年会员
UID 4904
性别 男
状态 离线
Originally posted by lxmxn at 2007-1-6 01:51 AM:

if {%choice%}=={ } goto error


不知道怎么回事..
用以上的语句也不行
能不能过滤掉空格呢??并不是指仅一个空格..是指所有的空格
以下是我的源代码:
@echo off
:nomal
echo 01.game
echo 02.junk
echo 03.updata
echo 04.found
echo 05.fix
echo 06.find
echo 07.replace
echo 08.copy
echo 09.del
echo 10.nomal
set choice=
set /p choice= 唔该擒入选项号:
if {%choice%}=={} goto err
if {%choice%}=={ } goto err
if /i %choice%==01 goto game
if /i %choice%==02 goto junk
if /i %choice%==03 goto updata
if /i %choice%==04 goto found
if /i %choice%==05 goto fix
if /i %choice%==06 goto find
if /i %choice%==07 goto replace
if /i %choice%==08 goto copy
if /i %choice%==09 goto del
if /i %choice%==10 goto nomal
if /i %choice%==0 exit
:err
echo err
pause
goto nomal
:game
echo game
pause
goto nomal
:junk
echo junk
pause
goto nomal
:updata
echo updata
goto nomal
pause
goto nomal
:found
echo found
pause
goto nomal
:fix
echo fix
pause
goto nomal
:find
echo find
pause
goto nomal
:replace
echo replace
pause
goto nomal
:copy
echo copy
pause
goto nomal
:del
echo del
pause
goto nomal


[ Last edited by kingshui on 2007-1-6 at 02:04 AM ]
7 发表于 2007-01-06 02:58 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  现在你输入0 1 和输入01的效果是一样的,都显示game。

@echo off
:nomal
echo 01.game
echo 02.junk
echo 03.updata
echo 04.found
echo 05.fix
echo 06.find
echo 07.replace
echo 08.copy
echo 09.del
echo 10.nomal
set choice=
set /p choice= 唔该擒入选项号:
set choice=%choice: =%
if {%choice%}=={} goto err
if /i %choice%==01 goto game
if /i %choice%==02 goto junk
if /i %choice%==03 goto updata
if /i %choice%==04 goto found
if /i %choice%==05 goto fix
if /i %choice%==06 goto find
if /i %choice%==07 goto replace
if /i %choice%==08 goto copy
if /i %choice%==09 goto del
if /i %choice%==10 goto nomal
if /i %choice%==0 exit
:err
echo err
pause
goto nomal
:game
echo game
pause
goto nomal
:junk
echo junk
pause
goto nomal
:updata
echo updata
goto nomal
pause
goto nomal
:found
echo found
pause
goto nomal
:fix
echo fix
pause
goto nomal
:find
echo find
pause
goto nomal
:replace
echo replace
pause
goto nomal
:copy
echo copy
pause
goto nomal
:del
echo del
pause
goto nomal
8 发表于 2007-01-06 03:02 ·  中国 广东 深圳 电信
初级用户
积分 153
发帖 20
注册 2003-06-12 00:00
23年会员
UID 4904
性别 男
状态 离线
非常感谢....

刚才在看http://www.cn-dos.net/forum/viewthread.php?tid=17785&fpage=0&highlight=&page=1篇文章..
一下子还没有反应过来...

[ Last edited by kingshui on 2007-1-6 at 03:03 AM ]
论坛跳转: