中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-03 21:42
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » [原创]列表输出文档,一些学习心得
可打印版本  1,213 / 13
第1楼 everest79 发表于 2007-03-25 05:00
金牌会员 发帖 1,127 积分 2,564
[原创]列表输出文档,一些学习心得
昨天看贴子有列表输出的,仔细想了下办法,做了个简单工具,在精简过程中发现set /a的一些特性,提出来大家探讨一下

set /a var1=(x...),var2=var1(x...),var3=var2(x...)
计算过程中,不因为一行命令的延缓约束来传送变量
例如以上,var2的计算过程中引用的var1就是前式结果
此例在for中依然有效,但call之后就不行了,不知什么原因


第2楼 lxmxn 发表于 2007-03-25 07:04
版主 发帖 4,938 积分 11,386

To everest79:

兄的代码有很多亮点,其中巧妙利用了set/a的很多特性,比如set /a 1/zzz||echo.,set的连续赋值(不知道说的对不对),值得好好的学习一下,支持!

今天把分用完了,改天给兄加分。
第3楼 everest79 发表于 2007-03-25 08:41
金牌会员 发帖 1,127 积分 2,564
re lxmxn
谢谢你的分,嘿嘿,平常在使用set/a时习惯性的都加了引用符号,反而把一些东西错过了,原来set/a连续赋值时各变量按先后顺序是有延缓特性,并且可以很好的工作在for这类命令中,一些简单的计数操作再也不用特意开启延缓了
第4楼 kcdsw 发表于 2007-03-25 08:44
中级用户 发帖 179 积分 404
晕倒啊 这分是俺加上去的

这个这个连续赋值俺还是没看明白
第5楼 everest79 发表于 2007-03-25 08:47
金牌会员 发帖 1,127 积分 2,564
下边代码就是连续赋值了,同时为a b c
第6楼 everest79 发表于 2007-03-26 02:19
金牌会员 发帖 1,127 积分 2,564
顶上来骗分
第7楼 stornager 发表于 2007-03-27 06:30
中级用户 发帖 131 积分 328
求教
brother everest79:可否详细解释一下set/a的用法?????????
第8楼 lagunazeng 发表于 2007-03-27 07:50
新手上路 发帖 5 积分 12
是啊,set /a到底是用来干什么的?
第9楼 flyinspace 发表于 2007-03-27 09:45
银牌会员 发帖 517 积分 1,206
汗.自己查看啊..help set就可以了.
第10楼 everest79 发表于 2007-03-27 10:14
金牌会员 发帖 1,127 积分 2,564
Originally posted by stornager at 2007-3-26 05:30 PM:
brother everest79:可否详细解释一下set/a的用法?????????


这个原理什么的讲不通,举个例子吧

set /a A=6-1,B=A*A,C=B-1,D=C/2

这个运算结果A=5 B=25 C=24 D=12,","是表达式分隔符,这条命令可以看作是一个表达式的集合,由结果可以发现不同于大多数命令的两个特点,第一,表达式是按先后次序来分层进行计算的,第二,每个表达式的结果也就是赋值在各个表达式间是可以按先后产生顺序来调用的,这是因为第一个特点产生的延时效果,这种延时效果在for之类命令中有较大的作用

通常我们在判断一个数是否为偶数时采用以下方法

set /a a=8%2 ;求除以2的余数
if %a% equ 0 echo %a%是偶数 ;判断余数是否为零,若是则为偶数

现在直接用set来完成

set /a 1/(8%2) 2>nul ||echo %a%是偶数

这样节省了变量空间,并简化了代码
这种方法在配合前边提到的两个特点,可以将一些工作变得简单起来
第11楼 flyinspace 发表于 2007-03-27 10:24
银牌会员 发帖 517 积分 1,206
set /a 1/(8%2) 2>nul ||echo %a%是偶数
不明白这一句??

变量a从那里来的??
第12楼 everest79 发表于 2007-03-27 10:26
金牌会员 发帖 1,127 积分 2,564
复制来的
第13楼 flyinspace 发表于 2007-03-27 10:52
银牌会员 发帖 517 积分 1,206
这么说吧.
set /a a=8%2 ;求除以2的余数
if %a% equ 0 echo %a%是偶数 ;判断余数是否为零,若是则为偶数
上面这段话很好理解.
我知道什么变量做了一些什么事?

而set /a 1/(8%2) 2>nul ||echo %a%是偶数
而这一句.若是单独用出来.
就会在屏幕上显示%a%

至于你说的复制来的。
我就更加不明白从那里复制来的..
第14楼 everest79 发表于 2007-03-27 23:52
金牌会员 发帖 1,127 积分 2,564
晕呀,那第二个echo %a%是偶数当然是复制第一个了
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023