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

功能:对200W行的TXT进行汇总,计算相同行的数量,可用于去除重复的行。
批处理实现优势:可处理大量数据(EXCEL2010最多200W行);速度更快;可制成定时任务。
代码如下:
  1. @echo off
  2. set num=-1
  3. cd.>result.txt
  4. >>result.txt echo 小区号 人数
  5. setlocal enabledelayedexpansion
  6. for /f %%i in (vlr11.txt) do (
  7.     set /a num+=1
  8.     set second=!first!
  9.     set first=%%i
  10.     if not "!second!"=="" if !second! neq !first! (>>result.txt echo !second! !num!&set num=0)
  11. )
  12. set /a num+=1
  13. >>result.txt echo %first% %num%
  14. ren result.txt "%date%".xls
  15. del /q vlr11.txt
复制代码
代码描述:将VLR11.TXT进行汇总生成当前日期为名字的XLS文件。取第一行赋值FIRST,将FIRST传递SECOND,再取下一行赋值FIRST。将FIRST与SECOND进行比较,即当前行与前一行进比较,相同继续;不同输入至RESULT.TXT。

上面的代码多次使>>,导致速度很慢(前两天在批处理论坛上找到原因,非常感谢论坛的帮助及受益)。做了小小的修改,时间由40多分钟减至3分钟。代码如下:
  1. @echo off
  2. set num=-1
  3. cd.>result.txt
  4. >>result.txt echo 小区号 人数
  5. setlocal enabledelayedexpansion
  6. (for /f %%i in (vlr11.txt) do (
  7.     set /a num+=1
  8.     set second=!first!
  9.     set first=%%i
  10.     if not "!second!"=="" if !second! neq !first! ( echo !second! !num!&set num=0)
  11. ))>>result.txt
  12. set /a num+=1
  13. >>result.txt echo %first% %num%
  14. ren result.txt "%date%".xls
  15. del /q vlr11.txt
复制代码
1

评分人数

TOP

语言:VBS
背景:SecureCRT(用于TELET,相信搞网维的人都很熟悉)
功能介绍:该段代码为我日常工作时所用,每天晚上从两台交换机中取出数据,存入表格及保存LOG文件。功能很简单,代码只实现了每晚自动取,懒人会很感兴趣。
流程介绍:对CRT进行指令输入,截取结果,存入表格或LOG;也可以用EXCEL中或TXT中取数据供CTR输入,然后得到结果。如果在公网,配合上飞信接口的VBS代码,实时监控,会给你有意想不到的结果。这段代码首先输入指令,得到结果,截取字符,存入EXCEL,并将所有的LOG,以当天为文件名存入LOG文件。
缺点:代码一次写完,实现了结果,就没有修改,未分模块,可读性差,本想全部加上注释,因工作忙,也没有很大的意义。我将控制CTR的VBS命令附上,及定制VBS计划任务的批处理,希望对大家的日常办公有所帮助。
  1. '网络的价值,在于你我的共享及经验的分享'
  2. '让你我的努力促进网络的发展,从而让自己从中受益。尊重作者,尊重原创……'
  3. '                                                 ---------------yuihi---------------2012-3-12
  4. # $language = "VBScript"
  5. # $interface = "1.0"
  6. Const ForReading = 1
  7. Const ForWriting = 2
  8. Const ForAppending = 8
  9. Sub Main
  10. dingshi=hour(now)
  11. if dingshi<23 then
  12. exit sub
  13. end if
  14.    crt.Screen.Synchronous = True 'CRT可见
  15.    Dim fso, file,chengname,dingshi,zmvi,hlr2,hlr3,hlr4,all,app,wb,ws '定义变量
  16. chengname=Year(now)&"年"&Month(now)&"月"&Day(now)&"日"'取当前日期赋给变量chengname
  17.   Set fso = CreateObject("Scripting.FileSystemObject")
  18.   Set file = fso.OpenTextFile("D:\漫游用户\" &chengname &".txt", ForAppending, True)
  19. crt.Screen.Send "***SSG2" & chr(13)
  20. crt.Screen.WaitForString "ENTER USERNAME < " & chr(8) & " "
  21. crt.Screen.Send "****" & chr(13)
  22. crt.Screen.WaitForString "ENTER PASSWORD < " & chr(8) & " "
  23. crt.Screen.Send "************" & chr(13)
  24. crt.Screen.WaitForString "< " & chr(8) & " "
  25. crt.Screen.Send "ZMVI;" & chr(13) & Chr(10)
  26. crt.Screen.WaitForStrings("COMMAND EXECUTED")
  27.         screenrow = crt.screen.CurrentRow - 2
  28.         readline = crt.Screen.Get(screenrow, 14, screenrow, 20 )
  29. zmvi=readline
  30. crt.Screen.Send "ZMVF::HLR=861376649000;" & chr(13) & Chr(10)
  31. crt.Screen.WaitForStrings("COMMAND EXECUTED")
  32.         screenrow = crt.screen.CurrentRow - 2
  33.         readline = crt.Screen.Get(screenrow, 8, screenrow, 14 )
  34. hlr2=readline
  35.   
  36. crt.Screen.Send "ZMVF::HLR=861387930000;" & chr(13)
  37. crt.Screen.WaitForStrings("COMMAND EXECUTED")
  38.         screenrow = crt.screen.CurrentRow - 2
  39.         readline = crt.Screen.Get(screenrow, 8, screenrow, 14 )
  40. hlr3=readline
  41. crt.Screen.Send "ZMVF::HLR=861518034000;" & chr(13)
  42. crt.Screen.WaitForStrings("COMMAND EXECUTED")
  43.         screenrow = crt.screen.CurrentRow - 2
  44.         readline = crt.Screen.Get(screenrow, 8, screenrow, 14 )
  45. hlr4=readline
  46. crt.Screen.Send "ZMVF::LAC=ALL,;" & chr(13)
  47. crt.Screen.WaitForStrings("COMMAND EXECUTED")
  48.         screenrow = crt.screen.CurrentRow - 2
  49.         readline = crt.Screen.Get(screenrow, 8, screenrow, 14 )
  50. all=readline
  51.   Set app = CreateObject("Excel.Application")
  52.   app.DisplayAlerts=FALSE
  53.   app.visible=FALSE
  54.   Set wb = app.Workbooks.Open("D:\漫游用户\GS2漫游数每日登记表.xls")
  55.   Set ws = wb.Worksheets(1)
  56.   app.WorkSheets(1).Activate
  57. app.range("A2").Value ="GS2"
  58. app.range("B2").Value =now
  59. app.range("C2").Value =zmvi
  60. app.range("D2").Value =hlr2
  61. app.range("E2").Value =hlr3
  62. app.range("F2").Value =hlr4
  63. app.range("G2").Value =all
  64. app.range("H2").Value ="=G2-F2-E2-D2"
  65. app.rows(2).insert
  66. app.save
  67. wb.close
  68. app.quit
  69. set app=nothing
  70. set wb=nothing
  71. set ws=nothing
  72. crt.Screen.Send "Z;"
  73. crt.Screen.Send chr(13)
  74. crt.Screen.WaitForString "< " & chr(8) & " "
  75. crt.Screen.Send "Z;" & chr(13)
  76. crt.Screen.WaitForString "srwork >"
  77. crt.Screen.Send "***SSG1" & chr(13)
  78. crt.Screen.WaitForString "ENTER USERNAME < " & chr(8) & " "
  79. crt.Screen.Send "****" & chr(13)
  80. crt.Screen.WaitForString "ENTER PASSWORD < " & chr(8) & " "
  81. crt.Screen.Send "*******" & chr(13)
  82. crt.Screen.WaitForString "< " & chr(8) & " "
  83. crt.Screen.Send "ZMVI;" & chr(13) & Chr(10)
  84. crt.Screen.Send "ZMVF::HLR=861376649000;" & chr(13)
  85. crt.Screen.Send "ZMVF::HLR=861387930000;" & chr(13)
  86. crt.Screen.Send "ZMVF::HLR=861518034000;" & chr(13)
  87. crt.Screen.Send chr(13)
  88. crt.Screen.Send "ZMVF::LAC=ALL,;" & chr(13)
  89.    crt.Screen.WaitForString Chr(10)
  90. crt.Screen.Send "Z;"
  91.   Dim waitStrs
  92.   waitStrs = Array( Chr(10), "Z;" )
  93.   Dim row, screenrow, readline, items
  94.   row = 1
  95.   Do
  96.       While True
  97.       result = crt.Screen.WaitForStrings( waitStrs )
  98.       If result = 2 Then
  99.         Exit Do
  100.       End If
  101.       screenrow = crt.screen.CurrentRow - 1
  102.       readline = crt.Screen.Get(screenrow, 1, screenrow, 50 )   
  103.       file.Write readline & vbCrLf
  104.     Wend
  105.   Loop
  106. crt.Screen.Send chr(13)
  107. crt.Screen.WaitForString "< " & chr(8) & " "
  108. crt.Screen.Send "Z;" & chr(13)
  109. 'crt.Screen.WaitForString "< " & chr(8) & " "
  110. crt.Screen.WaitForString "srwork >"
  111. crt.Screen.Send "***SSG2" & chr(13)
  112. crt.Screen.WaitForString "ENTER USERNAME < " & chr(8) & " "
  113. crt.Screen.Send "****" & chr(13)
  114. crt.Screen.WaitForString "ENTER PASSWORD < " & chr(8) & " "
  115. crt.Screen.Send "************" & chr(13)
  116. crt.Screen.WaitForString "< " & chr(8) & " "
  117. crt.Screen.Send "ZMVI;" & chr(13) & Chr(10)
  118. crt.Screen.Send "ZMVF::HLR=861376649000;" & chr(13)
  119. crt.Screen.Send "ZMVF::HLR=861387930000;" & chr(13)
  120. crt.Screen.Send "ZMVF::HLR=861518034000;" & chr(13)
  121. crt.Screen.Send chr(13)
  122. crt.Screen.Send "ZMVF::LAC=ALL,;" & chr(13)
  123. crt.Screen.Send "ZZZ;"
  124.    crt.Screen.WaitForString Chr(10)
  125.   waitStrs = Array( Chr(10), "ZZZ;" )
  126.   row = 1
  127.   Do
  128.       While True
  129.       result = crt.Screen.WaitForStrings( waitStrs )
  130.       If result = 2 Then
  131.         Exit Do
  132.       End If
  133.       screenrow = crt.screen.CurrentRow - 1
  134.       readline = crt.Screen.Get(screenrow, 1, screenrow, 50 )   
  135.       file.Write readline & vbCrLf
  136.     Wend
  137.   Loop
  138. crt.Screen.Send chr(13)
  139. crt.screen.synchronous = false
  140. crt.Screen.WaitForStringS "srwork >"
  141. crt.session.disconnect
  142. CRT.QUIT
  143. End Sub
复制代码
SecuerCRT的VBS命令集:
  1. TabCount = crt.GetTabCount() ‘获取当前已打开的标签总数
  2. Set tab = crt.GetTab(index)获取相应索引的标签
  3. tab = crt.session.Connectintab("/s IP专网/AR")’打开会话中的标签
  4. tab.Session.Connect标签连接
  5. tab.activate激活标签
  6. tab.Session.Connected = True判断标签会话是否已连接
  7. Name =  tab.Caption获取标签的名称
  8. crt.session.Connect "/telnet 10.178.153.194 8023" TELNET方式连接IP加端口
  9. crt.session.disconnect 中断会话连接
  10. CRT.QUIT 退出CRT
  11. crt.sleep 1000 等待1秒
  12. crt.screen.send "show interface description" &vbCr 向屏幕发送指令加回车
  13. crt.Screen.WaitForString "[JXSHR-MC-CMNET-BRAS01-ME60]" 在屏幕上等待字符串,然后再运行下一条
  14. screenrow = crt.screen.CurrentRow – 1 定义屏幕当前行数
  15. readline = crt.Screen.Get(screenrow, 8, screenrow, 14 ) 截取屏幕上相应的字符
复制代码
用批处理定时打开CRT中指令的脚本
  1. "C:\Program Files\SecureCRT\SecureCRT.EXE"    /T /SCRIPT 取BAS利用率.vbs
复制代码
1

评分人数

TOP

今天要截止了吧

TOP

这个贴还没有截止吗

TOP

回复 34# Batcher


    哦,我每天都来关注啊,

TOP

,奖品是什么啊,能奖本书给俺不

TOP

返回列表