中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 18:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于大小写转换的问题??? 查看 1,423 回复 6
楼 主 关于大小写转换的问题??? 发表于 2006-12-19 05:14 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
系统是2k
set /p con="是否继续(Y/N):"

set con=%con:y=Y%
set con=%con:n=N%

if %con%==Y goto continue
if %con%==N goto out
写在cmd脚本中程序执行中echo %con%
发现con此时为y=Y
也就是说con现在等于表达式y=Y
那么if判断时就变成 if y=Y==Y goto continue
可是这句话在2003中报语法错误 不知道为什么
另外set con=%con:y=Y%在命令行中执行后
echo %con% 此时con就等于Y
为什么命令行中和脚本中的命令执行不一样呢
2 发表于 2006-12-19 12:17 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线

IF /I == ……



if /i 参数可以不分大写或是小写来判断~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
3 发表于 2006-12-19 22:22 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
那set con=%con:y=Y%这句话
写在cmd脚本中程序中
con怎么为y=Y呢 不清楚
4 发表于 2006-12-19 22:43 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
另外2003
if /i %con%==Y goto continue
还是报错
5 发表于 2006-12-19 23:24 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
为了防止空变量或是意外的符号产生的冲突,一定要


IF /I ==


把比对的变量一定要用什么符号,象上面的 " " 中括号给括起来,让 if 读得清清晰晰,好的结构代码出错的情况就小一些~:)

if /i 参数已经可以不分大小写了,所以 set con=%con:y=Y% 这句就可以不再写上了~:)


如果不喜欢用等号判断,则 if 还提供了如下方式:



EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于


[ Last edited by redtek on 2006-12-19 at 10:25 AM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
6 发表于 2006-12-19 23:30 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 141
发帖 60
注册 2006-10-28 05:54
19年会员
UID 68605
性别 男
来自 天津
状态 离线
明白 谢谢redtek
7 发表于 2006-12-20 00:50 ·  中国 广东 深圳 福田区 电信
初级用户
积分 32
发帖 16
注册 2006-10-19 21:11
19年会员
UID 66985
性别 男
状态 离线
不错,学习了.
论坛跳转: