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

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

[复制链接]
发表于 2018-9-4 15:33:44 | 显示全部楼层 |阅读模式
如何把数字+字母自定义生成多少位数  并添加制定后缀


比如生成gwa564@126.com

首列要字母
 楼主| 发表于 2018-9-4 16:00:36 | 显示全部楼层
有人知道吗
发表于 2018-9-4 16:26:33 | 显示全部楼层
固定是6位字符串吗?
 楼主| 发表于 2018-9-4 16:51:26 | 显示全部楼层
回复 3# Batcher


    对的,固定六位或者七位   后缀一样  首是字母  6位或者7位是字母+数字
发表于 2018-9-4 17:56:18 | 显示全部楼层

  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
复制代码
 楼主| 发表于 2018-9-4 18:30:23 | 显示全部楼层
回复 5# xczxczxcz


    能调整几秒获取几万吗
发表于 2018-9-4 18:47:34 | 显示全部楼层
回复 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
复制代码
你自己数一下。
 楼主| 发表于 2018-9-4 18:49:31 | 显示全部楼层
回复 7# xczxczxcz


    谢谢, 就是没有那个一共生成多少个
发表于 2018-9-4 19:00:58 | 显示全部楼层
本帖最后由 xczxczxcz 于 2018-9-4 19:07 编辑

回复 8# z1366870839

你顶上没说,就没写了。

在 七楼 13 行 email.txt 的后面加上

  1. && set /a a+=1 && echo !a!
复制代码
 楼主| 发表于 2018-9-4 19:21:37 | 显示全部楼层
回复 9# xczxczxcz


    哥,还是无限刷~~~
发表于 2018-9-4 20:01:46 | 显示全部楼层
回复 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
复制代码
顶上版规不要挤牙膏,该批不去重复。生成的结果可能有重复。批生成的速度有限。几秒钟几万个,估计大神也有难度。太湖超算不一定能做到。批不吃硬件。
 楼主| 发表于 2018-9-4 23:27:34 | 显示全部楼层
回复 11# xczxczxcz


    谢谢
发表于 2018-9-5 00:50:39 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
xczxczxcz + 1 很历害,感觉被MS骗了,也可以为空。且更快 ...

查看全部评分

发表于 2018-9-5 06:53:54 | 显示全部楼层
一看就是刷客
发表于 2018-9-5 07:51:26 | 显示全部楼层
回复 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个。不过距离几秒钟几万个还有一段距离。当然平时用批主要是为了重复性工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 19:32 , Processed in 0.023662 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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