中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » if……else……语句中值得注意的一个问题
« [1] [2] »
作者:
标题: if……else……语句中值得注意的一个问题 上一主题 | 下一主题
gne3
高级用户

DOS学徒


积分 526
发帖 252
注册 2007-2-12
状态 离线
『第 16 楼』:  

有看了一篇呵呵

2007-2-16 23:38
查看资料  发短消息 网志   编辑帖子
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 17 楼』:  

学习!

我想计算前一天的日期
s:当前
l:前一天

  Quote:
set /p syear=
set /p smouth=
set /p sday=
if %smouth%%sday% == 0301 (
  set /a yyyy=syear%%4
  if %yyyy% == 0 (
    set lmouth=02 && set lday=29
    ) else (
    set lmouth=02 && set lday=28
    )
)

echo %lmouth% %lday%

分别测试20030301,20040301,
结果都是02 28

20040301的结果应该是02 29呀!!!

???

[ Last edited by xycoordinate on 2007-2-20 at 10:14 AM ]

2007-2-17 00:27
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子
weixieju
新手上路





积分 2
发帖 1
注册 2006-4-21
状态 离线
『第 18 楼』:  

只是说了IF语句的嵌套问题,只要学过C的朋友。不用就明白。

2007-3-1 11:07
查看资料  发送邮件  发短消息 网志   编辑帖子
lp1129
初级用户





积分 186
发帖 92
注册 2007-3-27
状态 离线
『第 19 楼』:  

非顶不可

2007-3-28 02:36
查看资料  发短消息 网志   编辑帖子
sadawn
初级用户





积分 39
发帖 14
注册 2007-1-19
状态 离线
『第 20 楼』:  

对于这个问题
我希望我们可以写出更可靠的代码`
比如这样
cd\
echo off
cls
echo 输入一个整数
set /p a=
if %a% gtr  90 echo ^>90&goto end
if %a% gtr  80 echo ^>80&goto end
if %a% gtr  70 echo ^>70&goto end
:end
pause

[ Last edited by sadawn on 2007-3-27 at 03:16 PM ]

2007-3-28 04:11
查看资料  发送邮件  发短消息 网志   编辑帖子
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 21 楼』:  

层层嵌套,层层括号!!

2007-10-11 20:34
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子
shrfish
新手上路





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

收益匪浅,3Q

2007-10-19 11:50
查看资料  发送邮件  发短消息 网志   编辑帖子
zyz0304360
中级用户




积分 257
发帖 123
注册 2008-1-5
来自 烟台
状态 离线
『第 23 楼』:  

学习了



路 是自己选的
学习 是为了具备解决问题的能力
2008-3-10 23:42
查看资料  发短消息 网志  OICQ (625621812)  编辑帖子
nanhui112
初级用户





积分 127
发帖 59
注册 2007-11-13
状态 离线
『第 24 楼』:  启用变量延迟

@echo off &setlocal enabledelayedexpansion
set /p syear=
set /p smouth=
set /p sday=
if "%smouth%%sday%"=="0301" (
  set /a yyyy=syear%%4
  if "!yyyy!"=="0" (
    set lmouth=02 && set lday=29
    ) else (
    set lmouth=02 && set lday=28
    )
)

echo %lmouth% %lday%
pause
你的格式没问题,这里关系到bat的特殊性:
因为变量%yyyy%在同一if的括号语句里 所以要启用变量延迟,以捕捉动态变化,否则不能感知,会认为%yyyy%是空。看下面的例子,则可不用变量延迟扩展:
@echo off
set /p syear=
set /p smouth=
set /p sday=
if "%smouth%%sday%"=="0301" (
  set /a yyyy=syear%%4 )
  if "%yyyy%"=="0" (
    set lmouth=02 && set lday=29
    ) else (
    set lmouth=02 && set lday=28
    )
echo %lmouth% %lday% &pause
---------我也是刚弄懂的^_^

2008-3-14 14:24
查看资料  发送邮件  发短消息 网志   编辑帖子
lokeymei
新手上路




积分 18
发帖 17
注册 2008-11-7
状态 离线
『第 25 楼』:  学习中………………

多谢指点

2008-11-8 18:01
查看资料  发送邮件  发短消息 网志   编辑帖子
yyyyyyyyy
初级用户





积分 137
发帖 85
注册 2007-11-26
状态 离线
『第 26 楼』:  

受益了

2009-2-2 12:13
查看资料  发送邮件  发短消息 网志   编辑帖子
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: