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

[文本处理] [已解决]批处理可以实现在gmail邮箱地址中随机加点吗?

比如 :[email=l.ibinglibinglibing890@gmail.com]l.ibinglibinglibing890@gmail.com[/email]
            [email=li.binglibinglibing890@gmail.com]li.binglibinglibing890@gmail.com[/email]
            [email=libi.nglibinglibing890@gmail.com]libi.nglibinglibing890@gmail.com[/email]
            [email=libin.glibinglibing890@gmail.com]libin.glibinglibing890@gmail.com[/email]
            [email=libingli.binglibing890@gmail.com]libingli.binglibing890@gmail.com[/email]
            [email=libinglibin.glibing890@gmail.com]libinglibin.glibing890@gmail.com[/email]
            [email=libinglibinglib.ing890@gmail.com]libinglibinglib.ing890@gmail.com[/email]
可以在[email=libinglibinglibing890@gmail.com]libinglibinglibing890[/email]之间任意加点都是子地址。那位朋友帮忙写一下希望列出的子地址不会重复  谢谢
我用论坛里一个朋友写的,处理我这个,半天不动,请高手帮助

[ 本帖最后由 jonm158 于 2010-8-18 21:36 编辑 ]
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

这个借鉴的地方很多,学习了,标记

TOP

谢谢版主,也谢谢各位大大了

TOP

优化了,测试字符串abcdefghijklmnopqrstu  21个字母
处理时间3秒到5秒左右
结果生成到 result.txt,  33MB   1048577 行 (第一行为空行)
2的20次方=1048576
  1. if wscript.arguments.count=0 then
  2.    createobject("wscript.shell").run _
  3.    "cmd /c cscript " &chr(34) &wscript.scriptname &chr(34) & " isme"
  4.    wscript.quit
  5. end if
  6. :rem paktc
  7. current=replace(wscript.scriptfullname,wscript.scriptname,"")
  8. '我获得当前路径的方法,很囧...
  9. set fs=createobject("scripting.filesystemobject")
  10. set result=fs.createtextfile(current &"result.txt")
  11. set inp=wscript.stdin
  12. set put=wscript.stdout
  13. 'src 定义整条字符串,不支持空格哦   <<-  定义在这里
  14. src="abcdefghijklmnopqrstu"
  15. srca=mid(src,1,10)
  16. srcb=mid(src,11)
  17. strall=""
  18. '先处理右边的参数示例"a","bcd"
  19. test mid(srcb,1,1),mid(srcb,2)
  20. put.writeline "Step 1 over.  Step2:"
  21. '然后前面这部分的,每一个都连接之前的全部结果
  22. funcb mid(srca,1,1) ,mid(srca,2) &" "
  23. result.close
  24. inp.readline
  25. function test(strcho,strhave)
  26.    if len(strhave)>0 then
  27.      tmpstr=strcho &"." & left(strhave,1)
  28.      test tmpstr,mid(strhave,2)
  29.      tmpstr=strcho & left(strhave,1)
  30.      test tmpstr,mid(strhave,2)
  31.    else
  32.      strall=strall &vbcrlf & strcho
  33.    end if
  34. end function
  35. function funcb(strcho,strhave)
  36.    strcho=replace(strcho," ","")
  37.    if len(strhave)>0 then
  38.      tmpstr=strcho &"." & left(strhave,1)
  39.      funcb tmpstr,mid(strhave,2)
  40.      tmpstr=strcho & left(strhave,1)
  41.      funcb tmpstr,mid(strhave,2)
  42.    else
  43.      result.write replace(strall,vbcrlf,vbcrlf &strcho)
  44.      put.writeline strcho
  45.    end if
  46. end function
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

vbs的话速度已经快很多了, 约莫着十几二十分钟可以完成吧?
等重新写一个又得等,时间已经过了哦?   去威客网吧,找一个处理得彻头彻尾的人

TOP

版主达人,请优化一个给我哦,谢谢

TOP

亲爱的版主,请明确指导一下,我笨鸟实在是不明白,谢谢

TOP

这个东西还可以优化速度的
a.b.c.d
a.b.cd
a.bc.d
a.bcd
============
ab.c.d
ab.cd
abc.d
abcd
============
区别是 "a."和a  ,后面的完全一样……   不过…… 我也是有工作的人,闪了。

TOP

vbs版的:改成cscript模式打开,这样方便看处理进度
  1. if wscript.arguments.count=0 then
  2.    createobject("wscript.shell").run _
  3.    "cmd /c cscript " &chr(34) &wscript.scriptname &chr(34) & " isme"
  4.    wscript.quit
  5. end if
  6. :rem paktc
  7. current=replace(wscript.scriptfullname,wscript.scriptname,"")
  8. '我获得当前路径的方法,很囧...
  9. set fs=createobject("scripting.filesystemobject")
  10. set result=fs.createtextfile(current &"result.txt")
  11. set inp=wscript.stdin
  12. set put=wscript.stdout
  13. test "a","bcdefghijklmn"
  14. inp.readline
  15. function test(strcho,strhave)
  16.    if len(strhave)>0 then
  17.      tmpstr=strcho &"." & left(strhave,1)
  18.      test tmpstr,mid(strhave,2)
  19.      tmpstr=strcho & left(strhave,1)
  20.      test tmpstr,mid(strhave,2)
  21.    else
  22.      put.writeline strcho
  23.      result.writeline strcho
  24.    end if
  25. end function
复制代码
上面vbs 一边显示一边写入result.txt

[ 本帖最后由 523066680 于 2010-8-18 10:07 编辑 ]
1

评分人数

TOP

应是这样的效果,前面十楼,523066680版主,写了一个,但对字符太长的,计算出来太慢了
a.b.c.d
a.b.cd
a.bc.d
a.bcd
ab.c.d
ab.cd
abc.d
abcd
请各高手显神通,指导

TOP

cure,你好,你这个命令只能生成这几个
[email]l.ibinglibinglibing890@gmail.com[/email]
[email]li.binglibinglibing890@gmail.com[/email]
[email]lib.inglibinglibing890@gmail.com[/email]
[email]libi.nglibinglibing890@gmail.com[/email]
[email]libin.glibinglibing890@gmail.com[/email]
[email]libing.libinglibing890@gmail.com[/email]
[email]libingl.ibinglibing890@gmail.com[/email]
[email]libingli.binglibing890@gmail.com[/email]
[email]libinglib.inglibing890@gmail.com[/email]
[email]libinglibi.nglibing890@gmail.com[/email]
[email]libinglibin.glibing890@gmail.com[/email]
[email]libinglibing.libing890@gmail.com[/email]
[email]libinglibingl.ibing890@gmail.com[/email]
[email]libinglibingli.bing890@gmail.com[/email]
[email]libinglibinglib.ing890@gmail.com[/email]
[email]libinglibinglibi.ng890@gmail.com[/email]
[email]libinglibinglibin.g890@gmail.com[/email]
[email]libinglibinglibing.890@gmail.com[/email]
[email]libinglibinglibing8.90@gmail.com[/email]
[email]libinglibinglibing89.0@gmail.com[/email]
[email]libinglibinglibing890.@gmail.com[/email]
我的要求还要生成这样的
[email]libin.glibinglibing890.@gmail.com[/email]
[email]libinglibin.glibing890.@gmail.com[/email]
[email]libin.glibinglibi.ng890.@gmail.com[/email]

TOP

  1. gawk -F@ "{n=length($1);for(i=1;i<=n;i++)print substr($1,1,i-1)substr($1,i,1)\".\"substr($1,i+1)\"@\"$2}" 1.txt >2.txt
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

不管怎样先顶一下。。。。。

TOP

CUER,你好,
我先把这个做成批处理
gawk -F@ "{n=length($1);for(i=1;i<=n;i++)print substr($1,1,i-1)substr($1,i,1)\".\"substr($1,i+1)\"@\"$2}" 1.txt
再把[email]libinglibinglibing890@gmail.com[/email]保存到1.txt里面

放在同一文件夹里,运行上面的命令,就闪了一下,没有别的变化。
请再指点

TOP

管理说的那个工具,以下了,但还是不清楚怎么用,还是要请高手指导,谢大家

TOP

返回列表