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

[数值计算] 我的求随机数每位数字和的批处理错在哪里?

[复制链接]
发表于 2012-8-3 22:20:11 | 显示全部楼层 |阅读模式
  1. @echo off

  2. set a=%random%

  3. echo %a%

  4. set sum=0

  5. set n=0

  6. :loop

  7. set /a sum=%a:~n,1%+%sum%

  8. set /a n=%n%+1

  9. if "%a:~n,1%" neq ""  goto loop


  10. echo 结果是%sum%

  11. pause
复制代码
 楼主| 发表于 2012-8-3 22:32:45 | 显示全部楼层
我知道错在哪里了 呵呵 应该写成:
  1. @echo off& setlocal enabledelayedexpansion

  2. set a=%random%

  3. echo %a%

  4. set sum=0

  5. set n=0

  6. :loop

  7. set /a sum=!a:~%n%,1!+%sum%

  8. set /a n=%n%+1

  9. if "!a:~%n%,1!" neq ""  goto loop


  10. echo 结果是%sum%

  11. pause
复制代码
发表于 2012-8-3 23:17:50 | 显示全部楼层
能不能不开启延迟标识,用下面这个代码的方式实现?
  1. @echo off
  2. :main
  3. cls
  4. set str=
  5. set /p str=    请输入字符串(退出请直接按回车):
  6. if not defined str exit
  7. cls
  8. echo.
  9. echo            转换前:"%str%"
  10. for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set str=%%str:%%i=%%i%%
  11. echo ____________________________________________
  12. echo.
  13. echo            转换后:"%str%"
  14. echo.
  15. echo                     按任意键进行下一次演示...
  16. pause>nul
  17. goto main
复制代码
跟这个是完全一样的
  1. setlocal enabledelayedexpansion
  2. for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set str=!str:%%i=%%i!
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 10:04 , Processed in 0.012708 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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