标题: [数值计算] 求:批处理随机生成多个手机号码 [打印本页]
作者: wh1234567 时间: 2012-7-31 19:33 标题: 求:批处理随机生成多个手机号码
本帖最后由 wh1234567 于 2012-7-31 19:35 编辑
开头一位是1,号码段和后面的4位都是随机产生,不是循环加1的那种,是打乱的那种
例如:
13903277509
15395371640
13101015362
18927095378
......
可以设定要生成的个数,并输出
作者: 悬崖之树 时间: 2012-7-31 22:40
- @echo off & setlocal ENABLEDELAYEDEXPANSION
- :ks
- cls
-
- set /p sum=请输入要生成的号码个数:
- for /l %%i in (1 1 %sum%) do (
-
- set /a a=!random!%%10
- set /a b=!random!%%10
- set /a c=!random!%%10
- set /a d=!random!%%10
- set /a e=!random!%%10
- set /a f=!random!%%10
- set /a g=!random!%%10
- set /a h=!random!%%10
- set /a i=!random!%%10
- set /a j=!random!%%10
-
- echo 1!a!!b!!c!!d!!e!!f!!g!!h!!i!!j!
- )
- echo.&echo.&echo.&echo.
- echo 按任意键重来 & pause>nul
- goto ks
复制代码
代码效率不高………………
作者: wh1234567 时间: 2012-8-1 00:10
回复 2# 悬崖之树
感谢您的帮助, 生成的号码不全是真实的手机号码,需修正,例如:13、15、18开头的那种。
作者: apang 时间: 2012-8-1 12:09
- @echo off&setlocal enabledelayedexpansion
- set/p n=个数:
- for /l %%a in (1 1 %n%) do (
- set a=358&set/a r=!random!%%3
- for %%b in (!r!) do set a=!a:~%%b,1!
- for /l %%b in (1 1 9) do set/a r=!random!%%10&set b=!b!!r!
- echo,1!a!!b!&set b=
- )
- pause
复制代码
作者: wh1234567 时间: 2012-8-1 13:09
回复 4# apang
咋不能输出保存?
作者: 悬崖之树 时间: 2012-8-1 18:57
现在这个是改进的:- @echo off & setlocal ENABLEDELAYEDEXPANSION
- :ks
- cls
-
- set /p sum=请输入要生成的号码个数:
- for /l %%i in (1 1 %sum%) do (
-
- set /a a=!random!%%3
- set /a b=!random!%%10
- set /a c=!random!%%10
- set /a d=!random!%%10
- set /a e=!random!%%10
- set /a f=!random!%%10
- set /a g=!random!%%10
- set /a h=!random!%%10
- set /a i=!random!%%10
- set /a j=!random!%%10
- if !a!==0 set a=3
- if !a!==1 set a=5
- if !a!==2 set a=8
-
- echo 1!a!!b!!c!!d!!e!!f!!g!!h!!i!!j!
- )
- echo.&echo.&echo.&echo.
- echo 按任意键重来 & pause>nul
- goto ks
复制代码
作者: 悬崖之树 时间: 2012-8-1 19:15
apang 发表于 2012-8-1 12:09
其实可以把所有的%%b 替换成 %%a- @echo off&setlocal enabledelayedexpansion
- set/p n=个数:
- for /l %%a in (1 1 %n%) do (
- set a=358&set/a r=!random!%%3
- for %%a in (!r!) do set a=!a:~%%a,1!
- for /l %%a in (1 1 9) do set/a r=!random!%%10&set b=!b!!r!
- echo,1!a!!b!&set b=
- )
- pause
复制代码
效果一样
作者: poter 时间: 2012-8-1 20:27
很简单的- @echo off
- setlocal enableDelayedExpansion
- set /p b=输入:
- for /l %%j in (1,1,!b!) do (
- set str1=
- for /l %%i in (1,1,12) do (
- set /a a=!random!%%10
- set str1=!str1!!a!
- )
- echo 1!str1!
- )
复制代码
作者: apang 时间: 2012-8-1 20:58
回复 7# 悬崖之树
是一样的,不过偶不习惯这样写。比如下面的FOR嵌套就不得不分别写成%%a和%%b了,呵呵- @echo off
- for %%a in (a b) do for %%b in (c d) do echo %%a%%b
- pause
复制代码
作者: apang 时间: 2012-8-1 21:05
回复 8# poter
13位的?
作者: poter 时间: 2012-8-1 22:15
回复 10# apang
刚才没看到楼主提的新要求,用VBS做了一个- option explicit
- dim a, b, c, d, e, f, g, forwriting
- d = inputbox("") + 0
- forwriting = 2
- set f = createobject("scripting.filesystemobject")
- set g = f.createtextfile("123.txt", forwriting)
- for a = 0 to d -1
- g.writeline func1(d)
- next
-
- function func1(str1)
- dim str
- str = "358"
- Randomize
- do
- b = Int(((3 - 0 + 1) * Rnd ) + 0)
- loop until b > 0
- do
- c= 1 & mid(str, b, 1)
- e = int(((999999999 - 0 + 1) * rnd ) + 0)
- loop until len(e) = 9
- func1 = c & e
- end function
复制代码
作者: wh1234567 时间: 2012-8-2 04:03
另外问问,最多允许生成输出多少个或多少行?不知道批处理对输出内容有没有最大行数或字节大小的限制?
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |