[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 m891319 于 2012-12-20 08:58 编辑
  1. @echo off
  2. set n=100
  3. set /a a=(%n%+1)*%n%/2
  4. echo %a%
  5. pause
复制代码
1

评分人数

    • batman: 是连加不是公式 为参与精神加分PB + 2
Rick

TOP

不能单纯用公式 要用累加的话
goto算不算循环?
  1. @echo off
  2. set n=100
  3. :r
  4. set /a i=%i%+1
  5. set /a a=%a%+%i%
  6. if not %i%==%n% goto :r
  7. echo %a%
  8. pause
复制代码
1

评分人数

Rick

TOP

本帖最后由 m891319 于 2012-12-23 19:32 编辑

回复 28# CrLf


    学习了m+=n+=1的方法

看了前面几位大大的思路
稍微总结了下简化代码的思考方向:
1. 利用%0等方式递规呼叫
2. 利用 && 或 || 简化判断流程
3. 目前看到递规的最简化 set/am+=n+=1 ,实在经典
4. 由于题目没有限定输出,后面的讨论都在于不拘泥于正式输出,
    以求更加精简代码

这是小弟领悟后的答案
  1. @set/%~n0%0
复制代码
得将档案储存为"am+=n+=1&setlocal enabledelayedexpansion&if !n!==100 (echo !m!&pause) else endlocal&"
不包含双引号,输出相当正式,也不会有递规产生
不过由于档名有字元限制,"set/" 实在是无法省略
算是有些投机取巧的方法...
1

评分人数

    • CrLf: 有新意!技术 + 1
Rick

TOP

返回列表