找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33326|回复: 10

[数值计算] [已解决]批处理怎样实现递增运算?

[复制链接]
发表于 2011-9-14 16:55:27 | 显示全部楼层 |阅读模式
本帖最后由 brim 于 2011-9-17 13:29 编辑

求一计算批处理。
例如:
底数 1
递增次数 3
结果=8
运算过程是1 2 4 8

又例如:
底数 3
递增次数 3
结果=24
运算过程是3 6 12 24

变量A=底数
变量B=次数
第一次循环A*2 赋值给变量C
第二次循环递增C*2…如此直到变量B的次数
小弟学艺不精,在此求教各位高手,还望不吝赐教。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-9-14 17:06:36 | 显示全部楼层
  1. @echo off

  2. set num1=3
  3. set num2=3
  4. set /a num1=%num1%^<^<%num2%
  5. echo %num1%


  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-9-14 17:24:39 | 显示全部楼层
本帖最后由 brim 于 2011-9-14 17:25 编辑

非常感谢hankerer
  1. @echo off
  2. set /p num1=  请输入底数:
  3. set /p num2=  请输入循环次数:
  4. set /a num1=%num1%^<^<%num2%
  5. echo %num1%
  6. pause
复制代码
发表于 2011-9-14 20:28:24 | 显示全部楼层
  1. @echo off
  2. Set /p snum=输入底数:
  3. Set /p num=输入递增次数:
  4. For /l %%i in (1,1,%num%) do Set /a snum*=2
  5. echo %snum%
  6. pause>nul
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2011-9-14 21:55:20 | 显示全部楼层
凑个热闹吧 哈哈

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set /P Num1=请输入底数:
  3. Set /P Num2=请输入递增次数:
  4. Cls
  5. For /L %%A In (1,1,%Num2%) Do (
  6.         Set /A Num1+=!Num1!
  7.         Echo 第%%A次递增结果:        !Num1!
  8.         Ping -n 1 127.0.0.1 > Nul
  9. )
  10. Echo.
  11. Echo 递增最总结果为:%Num1%
  12. Echo.
  13. Pause>Nul
复制代码
加了点小效果,哈哈。 还请笑纳!

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-9-14 22:04:58 | 显示全部楼层
本帖最后由 xudaweb 于 2011-9-14 22:06 编辑

回复 2# hankerer

Hello123World版主的代码易懂些。这句代码中的^<看得我有些晕啊,请高手解释下。
  1. set /a num1=%num1%^<^<%num2%
复制代码
发表于 2011-9-14 22:15:09 | 显示全部楼层
回复  hankerer

Hello123World版主的代码易懂些。这句代码中的^
xudaweb 发表于 2011-9-14 22:04


转移。不然会认为是重定向。
发表于 2011-9-14 22:33:05 | 显示全部楼层
回复 7# hankerer
  1. set /a num1=%num1%^<^<%num2%
复制代码
还是不懂重定向的意思...能否详细的解释下"^<^<"的意思? 感谢~
发表于 2011-9-14 23:07:58 | 显示全部楼层
回复 8# xudaweb


那个不是重定向,是位运算。参考:

批处理位运算以及原码、反码、补码的概念
http://bbs.bathome.net/thread-1844-1-1.html

批处理set命令学习笔记
http://bbs.bathome.net/viewthread.php?tid=3774#pid23888
 楼主| 发表于 2011-9-17 16:58:58 | 显示全部楼层
本帖最后由 brim 于 2011-9-17 17:03 编辑

回复 8# xudaweb


   其实可以写成
  1. set /a num1=%num1%"<<"%num2%
复制代码
<<逻辑移位符。我看了一下http://bbs.bathome.net/viewthread.php?tid=3774#pid23888
[x]"<<"[y]==[x]*2^[y]
[x]">>"[y]==[x]/2^[y]
讲得很清楚了。。
当输入特殊字符^&|<>时,前要加上^,否则出现语法错误.

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-9-19 20:51:45 | 显示全部楼层
多谢Batcher,brim两位的热心帮助。内容还在慢慢消化中...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:09 , Processed in 0.023530 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表