![]() |
中国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: 这个原理什么的讲不通,举个例子吧 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 |