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

[数值计算] 求:批处理随机生成多个手机号码

[复制链接]
发表于 2012-7-31 19:33:42 | 显示全部楼层 |阅读模式
本帖最后由 wh1234567 于 2012-7-31 19:35 编辑

开头一位是1,号码段和后面的4位都是随机产生,不是循环加1的那种,是打乱的那种
例如:
13903277509
15395371640
13101015362
18927095378
......
可以设定要生成的个数,并输出
发表于 2012-7-31 22:40:16 | 显示全部楼层
  1. @echo off & setlocal ENABLEDELAYEDEXPANSION
  2. :ks
  3. cls

  4. set /p sum=请输入要生成的号码个数:
  5. for /l %%i in (1 1 %sum%) do (

  6. set /a a=!random!%%10
  7. set /a b=!random!%%10
  8. set /a c=!random!%%10
  9. set /a d=!random!%%10
  10. set /a e=!random!%%10
  11. set /a f=!random!%%10
  12. set /a g=!random!%%10
  13. set /a h=!random!%%10
  14. set /a i=!random!%%10
  15. set /a j=!random!%%10

  16. echo 1!a!!b!!c!!d!!e!!f!!g!!h!!i!!j!
  17. )
  18. echo.&echo.&echo.&echo.
  19. echo 按任意键重来 & pause>nul
  20. goto ks



复制代码
代码效率不高………………
 楼主| 发表于 2012-8-1 00:10:43 | 显示全部楼层
回复 2# 悬崖之树

感谢您的帮助,    生成的号码不全是真实的手机号码,需修正,例如:13、15、18开头的那种。
发表于 2012-8-1 12:09:12 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p n=个数:
  3. for /l %%a in (1 1 %n%) do (
  4.   set a=358&set/a r=!random!%%3
  5.   for %%b in (!r!) do set a=!a:~%%b,1!
  6.   for /l %%b in (1 1 9) do set/a r=!random!%%10&set b=!b!!r!
  7.   echo,1!a!!b!&set b=
  8. )
  9. pause
复制代码
 楼主| 发表于 2012-8-1 13:09:23 | 显示全部楼层
回复 4# apang

咋不能输出保存?
发表于 2012-8-1 18:57:17 | 显示全部楼层
现在这个是改进的:
  1. @echo off & setlocal ENABLEDELAYEDEXPANSION
  2. :ks
  3. cls

  4. set /p sum=请输入要生成的号码个数:
  5. for /l %%i in (1 1 %sum%) do (

  6. set /a a=!random!%%3
  7. set /a b=!random!%%10
  8. set /a c=!random!%%10
  9. set /a d=!random!%%10
  10. set /a e=!random!%%10
  11. set /a f=!random!%%10
  12. set /a g=!random!%%10
  13. set /a h=!random!%%10
  14. set /a i=!random!%%10
  15. set /a j=!random!%%10
  16. if !a!==0 set a=3
  17. if !a!==1 set a=5
  18. if !a!==2 set a=8

  19. echo 1!a!!b!!c!!d!!e!!f!!g!!h!!i!!j!
  20. )
  21. echo.&echo.&echo.&echo.
  22. echo 按任意键重来 & pause>nul
  23. goto ks

复制代码
发表于 2012-8-1 19:15:57 | 显示全部楼层
apang 发表于 2012-8-1 12:09


其实可以把所有的%%b 替换成 %%a
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p n=个数:
  3. for /l %%a in (1 1 %n%) do (
  4.   set a=358&set/a r=!random!%%3
  5.   for %%a in (!r!) do set a=!a:~%%a,1!
  6.   for /l %%a in (1 1 9) do set/a r=!random!%%10&set b=!b!!r!
  7.   echo,1!a!!b!&set b=
  8. )
  9. pause
复制代码
效果一样
发表于 2012-8-1 20:27:04 | 显示全部楼层
很简单的
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set /p b=输入:
  4. for /l %%j in (1,1,!b!) do (
  5.         set str1=
  6.         for /l %%i in (1,1,12) do (
  7.                 set /a a=!random!%%10
  8.                 set str1=!str1!!a!
  9.         )
  10.         echo 1!str1!
  11. )
复制代码
发表于 2012-8-1 20:58:31 | 显示全部楼层
回复 7# 悬崖之树


    是一样的,不过偶不习惯这样写。比如下面的FOR嵌套就不得不分别写成%%a和%%b了,呵呵
  1. @echo off
  2. for %%a in (a b) do for %%b in (c d) do echo %%a%%b
  3. pause
复制代码
发表于 2012-8-1 21:05:19 | 显示全部楼层
回复 8# poter


    13位的?
发表于 2012-8-1 22:15:24 | 显示全部楼层
回复 10# apang


    刚才没看到楼主提的新要求,用VBS做了一个
  1. option explicit
  2. dim a, b, c, d, e, f, g, forwriting
  3. d = inputbox("") + 0
  4. forwriting = 2
  5. set f = createobject("scripting.filesystemobject")
  6. set g = f.createtextfile("123.txt", forwriting)
  7. for a = 0 to d -1
  8. g.writeline func1(d)
  9. next

  10. function func1(str1)
  11.         dim str
  12.         str = "358"
  13.         Randomize
  14.         do
  15.                 b = Int(((3 - 0 + 1) * Rnd ) + 0)
  16.         loop until b > 0
  17.         do
  18.         c= 1 & mid(str, b, 1)
  19.         e = int(((999999999 - 0 + 1) * rnd ) + 0)
  20.         loop until len(e) = 9
  21.         func1 = c & e
  22. end function
复制代码
 楼主| 发表于 2012-8-2 04:03:53 | 显示全部楼层
另外问问,最多允许生成输出多少个或多少行?不知道批处理对输出内容有没有最大行数或字节大小的限制?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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