[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] [分享]批处理set/a命令精简与提速技巧

比如要完成如下操作:
(该操作选自某个有关程序进度条显示的计算)
  1. set/a n=0
  2. set/a p=1
  3. set/a a=20000
  4. set/a b+=1
  5. set/a c=b*100/a
复制代码
我们通常都是这么做(这样写紧凑还稍微能提高点效率):
  1. set/a n=0,p=1,a=20000,b+=1,c=b*100/a
复制代码
如果你追求效率与短小的极致:下面写法更紧凑,效率也有所提高
  1. set/ac=(b+=p=1)*100/(a=2000)+(n=0)
复制代码
另外:set/a 是表达式计算(验证了下,发现和C语言的表达式值计算规则基本相同)
      逗号表达式的值等于最右边表达式的值:
  1. set/a m=(a=3,b+=a,c=5)
  2. ::则m的值等于c的值
复制代码
给a、b、c、d、m、n;6个变量赋值为0的实用精简代码:
  1. set/a a=b=c=d=m=n=0
复制代码
ps:原来想当然以为成倍提速呢,测试了下提速仅是5~8%,只有当有很多表达式参与运算时,效率才有所提升。
5

评分人数

回复 1# plp626


    set /a 的高级用法
学习了

TOP

回复 16# CrLf


    +=,-=称为复合赋值运算符;如batch所说,自增,自减

TOP

小白还在发愣中,膜拜,一年以后再来读懂它

TOP

(a=i+=1;)=/=(a=i++;)
==(a=++i)

TOP

本帖最后由 applba 于 2011-6-6 15:29 编辑

虽然+=和++效果上一样,但是区别还是蛮大的。
+=是双目运算,++是单目运算。

TOP

16# zm900612


他说的是:
i++
i--
++i
--i
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

“Cmd.exe的数学表达式跟C语言里面的表达式基本上完全一致。
SET /a支持的运算符也跟C语言里面的一样,只是没有了自加一自减一。”
applba 发表于 2011-6-6 14:18



自加一自减一不就是set /a n+=1,m-=1吗?

TOP

还是python好用,什么都不要,直接当计算器用。

一次赋多个值:
(x,y,z)=(1,2,3)
或者(x,y,z)=range(1,3)
赋值后x=1 y=2 z=3

TOP

“Cmd.exe的数学表达式跟C语言里面的表达式基本上完全一致。
SET /a支持的运算符也跟C语言里面的一样,只是没有了自加一自减一。”

TOP

学习了..
留贴

TOP

set本身的用时远大于一条算式的耗时(好像是二十几倍),所以虽说是只提高了百分之六,但其实是有大幅提高的,当算式多的时候,在一个set中使用多条算式的方法中的算式用时将逼近set命令的耗时,此时新方法就体现出威力了

TOP

第一次知道原来可以这样写,太强大了,很黄很暴力,收藏了
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

8# powerbat

严密一些嘛,毕竟我也没看过源代码,C的表达式概念不限于数值,概念比较广。

TOP

8# powerbat


汗,确实...

TOP

返回列表