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

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

本帖最后由 wh1234567 于 2012-7-31 19:35 编辑

开头一位是1,号码段和后面的4位都是随机产生,不是循环加1的那种,是打乱的那种
例如:
13903277509
15395371640
13101015362
18927095378
......
可以设定要生成的个数,并输出

  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
复制代码
代码效率不高………………

TOP

回复 2# 悬崖之树

感谢您的帮助,    生成的号码不全是真实的手机号码,需修正,例如:13、15、18开头的那种。

TOP

  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
复制代码

TOP

回复 4# apang

咋不能输出保存?

TOP

现在这个是改进的:
  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
复制代码

TOP

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
复制代码
效果一样

TOP

很简单的
  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. )
复制代码

TOP

回复 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
复制代码

TOP

回复 8# poter


    13位的?

TOP

回复 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
复制代码

TOP

另外问问,最多允许生成输出多少个或多少行?不知道批处理对输出内容有没有最大行数或字节大小的限制?

TOP

返回列表