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

[文本处理] 请教批处理如何把数字+字母自定义生成多少位数?

如何把数字+字母自定义生成多少位数  并添加制定后缀


比如生成gwa564@126.com

首列要字母

有人知道吗

TOP

固定是6位字符串吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher


    对的,固定六位或者七位   后缀一样  首是字母  6位或者7位是字母+数字

TOP

  1. @echo off & setlocal EnableDelayedExpansion
  2. cd/d "%~dp0"
  3. :FIRST
  4. set n=-1
  5. for %%a 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 0 1 2 3 4 5 6 7 8 9) do (
  6. set /a n+=1
  7. set "str!n!=%%a"
  8. )
  9. set /a n0=%random%%%26,n1=%random%%%36,n2=%random%%%36,n3=%random%%%36
  10. set /a n4=%random%%%36,n5=%random%%%36,n6=%random%%%36
  11. call echo %%str!n0!%%%%str!n1!%%%%str!n2!%%%%str!n3!%%%%str!n4!%%%%str!n5!%%%%str!n6!%%@126.com
  12. timeout /t 2 /nobreak >nul
  13. goto FIRST
复制代码

TOP

回复 5# xczxczxcz


    能调整几秒获取几万吗

TOP

回复 6# z1366870839

没有测试。下面的保证 至少有一位数字。并把结果输出到文本。
  1. @echo off & setlocal EnableDelayedExpansion
  2. cd/d "%~dp0"
  3. :FIRST
  4. set n=-1
  5. for %%a in (q w e r t y u i o p a s d f g h j k l z x c v b n m 0 1 2 3 4 5 6 7 8 9) do (
  6. set /a n+=1
  7. set "str!n!=%%a"
  8. )
  9. set /a n0=%random%%%26,n1=%random%%%36,n2=%random%%%36,n3=%random%%%36
  10. set /a n4=%random%%%36,n5=%random%%%36,n6=%random%%%36
  11. echo %%str!n1!%% %%str!n2!%% %%str!n3!%% %%str!n4!%% %%str!n5!%% %%str!n6!%% | findstr "[0-9]">nul 2>&1 || goto FIRST
  12. call echo %%str!n0!%%%%str!n1!%%%%str!n2!%%%%str!n3!%%%%str!n4!%%%%str!n5!%%%%str!n6!%%@126.com>>email.txt
  13. goto FIRST
复制代码
你自己数一下。

TOP

回复 7# xczxczxcz


    谢谢, 就是没有那个一共生成多少个

TOP

本帖最后由 xczxczxcz 于 2018-9-4 19:07 编辑

回复 8# z1366870839

你顶上没说,就没写了。

在 七楼 13 行 email.txt 的后面加上
  1. && set /a a+=1 && echo !a!
复制代码

TOP

回复 9# xczxczxcz


    哥,还是无限刷~~~

TOP

回复 10# z1366870839

你的意思是生成多少个后 自动停止 ? 现在这个是无限循环的。不想要的时候直接X掉。

假如生成 10000个。
  1. @echo off & setlocal EnableDelayedExpansion
  2. cd/d "%~dp0"
  3. :FIRST
  4. set n=-1
  5. for %%a in (q w e r t y u i o p a s d f g h j k l z x c v b n m 0 1 2 3 4 5 6 7 8 9) do (set /a n+=1 & set "str!n!=%%a")
  6. set /a n0=%random%%%26,n1=%random%%%36,n2=%random%%%36,n3=%random%%%36,n4=%random%%%36,n5=%random%%%36,n6=%random%%%36
  7. echo %%str!n1!%% %%str!n2!%% %%str!n3!%% %%str!n4!%% %%str!n5!%% %%str!n6!%% | findstr "[0-9]">nul 2>&1 || goto FIRST
  8. call set "name=%%str!n0!%%%%str!n1!%%%%str!n2!%%%%str!n3!%%%%str!n4!%%%%str!n5!%%%%str!n6!%%"
  9. set /a a+=1
  10. call set/p=!a! !name!@126.com <nul & echo !name!@126.com>>email.txt & echo;
  11. if !a! geq 10000 goto END
  12. goto FIRST
  13. :END
  14. pause
复制代码
顶上版规不要挤牙膏,该批不去重复。生成的结果可能有重复。批生成的速度有限。几秒钟几万个,估计大神也有难度。太湖超算不一定能做到。批不吃硬件。

TOP

回复 11# xczxczxcz


    谢谢

TOP

本帖最后由 zaqmlp 于 2018-9-5 01:03 编辑

回复 11# xczxczxcz
这样改是否快些,另外利用多开合并方法,纯批也可以实现几秒钟几万个甚至更多吧
  1. @echo off & setlocal EnableDelayedExpansion
  2. cd/d "%~dp0"
  3. set /a n=-1,m=1,count=10000
  4. for %%a in (q w e r t y u i o p a s d f g h j k l z x c v b n m 0 1 2 3 4 5 6 7 8 9) do (set /a n+=1 & set "#!n!=%%a")
  5. (for /l %%a in () do (
  6.     set /a n0=!random!%%26,n1=!random!%%36,n2=!random!%%36,n3=!random!%%36,n4=!random!%%36,n5=!random!%%36,n6=!random!%%36
  7.     set "s="
  8.     for /l %%b in (0 1 6) do (for %%c in (!n%%b!) do set s=!s!!#%%c!)
  9.     if !m! leq %count% (
  10.         for /f "delims=0123456789" %%b in ("!s!") do (if "%%~b" neq "!s!" (set /a m+=1&echo;!s!@126.com))
  11.     ) else exit
  12. ))>"email.txt"
复制代码
1

评分人数

    • xczxczxcz: 很历害,感觉被MS骗了,也可以为空。且更快 ...技术 + 1
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

一看就是刷客

TOP

回复 13# zaqmlp

谢谢!很历害。先在你的代码后面加了一段计时统计。结果程序走到指定次数后不往下走了。返回看批,把你写的 exit 改成 GOTO XXX ,发现不起作用。查MS命令行手册,说 for /l {%%|%} xxx in (<set>) 中的<set>说是要赋值。经过几次测试,发现赋了值的很容易在循环完后接着走下一步。而空值易卡在里面不出来,测试goto echo等无效。然后把计时统计放在大循环内的开始,这个有效。不过这样会影响主循环的时间。所以又放到了循环之后。最后把 exit 改成 call 时间统计。测试结果。批程式确实很快。8“985毫秒/10000;15”/20000个;23“/30000个。我自己优化的(没发)29”/10000个,时间是你的3倍多,太out了。我自己写的那个在用FOR给7个字符替代赋值只用了一层循环,把你的那个2重循环换成直接赋值,测试增加近一半的时间 15“/10000个。不过距离几秒钟几万个还有一段距离。当然平时用批主要是为了重复性工作。

TOP

返回列表