中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]批处理中的比较 上一主题 | 下一主题
punk101
新手上路





积分 18
发帖 5
注册 2006-3-30
状态 离线
『楼 主』:  [求助]批处理中的比较

内网全部计算机名命名方式是前缀+顺序数字 ,比如la001 ---la100
获取本机计算机名(用hostname),获得出来后比较计算机名的数字,如果小于100,则什么什么。。。。。。
如果大于100,则。。。。。。。

本人懂得一点,就是用HOSTNAME获得计算机名,然后提取计算机名的数字,再和100比较大小。。。。就知道这么多,具体的就不知道了

请问大家如何实现,谢谢了

2006-5-5 09:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 2 楼』:  

Re  punk101:
其实获得计算机名并非一定要用hostname,在XP系统中,你可以用COMPUTERNAME变量来获得计算机名,如果你的计算机没有加入域的话还可以用USERDOMAIN,LOGONSERVER等变量来获得。如果你一定要用hostname的话,最常见的是用for来提取:
for /f %i in ('hostname') do set name=%i
提取了计算机名后,再和100比较大小:
if %name:~2% LSS 100 (echo 小于100) else (echo 大于等于100)

2006-5-5 11:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chineselgs
高级用户

论坛灌水专业户


积分 613
发帖 266
注册 2006-4-19
来自 河南省
状态 离线
『第 3 楼』:  看不太懂~





饮马恒河畔,剑指天山西,碎叶城揽月,库叶岛赏雪,黑海之滨垂钓,贝尔加湖面张弓;中南半岛访古,东京废墟祭祖!
  
2006-5-5 19:40
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (342210799)  编辑帖子  回复  引用回复
punk101
新手上路





积分 18
发帖 5
注册 2006-3-30
状态 离线
『第 4 楼』:  

谢谢3742668版主,已经可以实现了
但还有个小问题想问下你。。。比较中LSS是小于,,,大于是什么,谢谢了

2006-5-5 21:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 5 楼』:  

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

运行if /?可以得到更多的帮助。

2006-5-5 22:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
punk101
新手上路





积分 18
发帖 5
注册 2006-3-30
状态 离线
『第 6 楼』:  

好奇怪的是。。。在实际应用时候,LSS却是大于的。。。。
GRT却是小于。。。。不解。。你可以帮我试下看吗

2006-5-5 23:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 7 楼』:  

是你的代码有毛病吧?你多检查检查。
在用if比较前先用echo把变量显示出来,再用pause中断了检查看看。。。
对了,只能比较整数,不能比较小数和字符串。
我这里测试LSS正常:
if 3 LSS 5 (echo 3小于5) else (echo 3大于5)
3小于5

2006-5-5 23:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
punk101
新手上路





积分 18
发帖 5
注册 2006-3-30
状态 离线
『第 8 楼』:  

已经可以了,原来显示出来的变量是错的。。。。
我修改后就得了
谢谢3742668版主的热心~~~
以后要是有什么问题还请多多指教:)

2006-5-6 07:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 9 楼』:  

关于在批处理中用if比较数值的大小,建议在用if比较前先对变量进行审核。
在本例中,由于你是用%name:~2%来获得数值的,所以如果编号是0开头的话,那么转换过后的数值应该是以8进制表示,实际变量的值要比估计的要小。因此,最好在比较前先处理一下:
set num=1%name:~2%
if %num% lss 1100 ..........
虽然上述情况在你的脚本中与100比较的时候可能碰不到,不过在用if进行数值比较前先对变量进行处理应该是个好习惯。

2006-5-6 13:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: