eagle846 eagle846
关注数: 10 粉丝数: 69 发帖数: 1,166 关注贴吧数: 12
入门进阶-文本处理代码样例 以下是我总结的常见文本基本处理样例,供入门者进阶使用。 希望入门者不要一直停留在用msgbox整人的水平,近期会陆续整理进程管理、网络应用和WMI等方面的进阶材料。 如果各位需要其它方面的代码,可以跟帖说明 BY: EAGLE QQ: 369029696 一. 文件处理 1. 读取文件行数 set fso = CreateObject("Scripting.Filesystemobject") cnt=0 Set rf=fso.opentextfile(inputfile,1) 'inputfile为需要读取的文件,如c:\a.txt do while rf.atendofstream=0 tempstr=rf.readline cnt=cnt+1 loop rf.close 2. 合并某个文件夹里的所有子文件 set fso = CreateObject("Scripting.Filesystemobject") call Integrate2("c:\test\","c:\output.txt") '将c:\test\目录下的所有文件合并,并输出至c:\output.txt文件 Function Integrate2(sofolder,outputfile) if fso.FileExists(outputfile) = 0 then set wf=fso.createtextfile(outputfile) else set wf=fso.opentextfile(outputfile,2) end if wscript.sleep 500 set sofold = fso.getfolder(sofolder) Set subfiles = sofold.files For each subfile in subfiles set rf = fso.opentextfile(subfile,1) do while rf.atendofstream=0 wf.writeline rf.readline loop next End Function 3. 为自己的脚本增加log功能 set fso = CreateObject("Scripting.Filesystemobject") dim logfile logfile="c:\log.txt" RecLog "----------------------------------------" RecLog "start: " & now msgbox "脚本已经启动" msgbox "脚本即将退出" RecLog "end: " & now RecLog "----------------------------------------" Function RecLog(str) Set Rec = Fso.opentextfile(logfile,8) Rec.Writeline str Rec.close End Function 4. 数据逐行处理 使用场景说明: 目标文件c:\source.txt内容格式如下: CITY|PRODUCT 0571|100001 0571|100002 0572|100003 0571|100004 0571|100005 0572|100003 0571|100004 0572|100005 现需要将其中第城市为0571的所有产品信息提取出来,并输出到c:\output.txt set fso = CreateObject("Scripting.Filesystemobject") Set rf = fso.opentextfile("c:\source.txt",1) Set wf = fso.createtextfile("c:\output.txt",1) do while rf.atendofstream=0 tempstr=rf.readline if split(tempstr,"|")(0)="0571" then wf.writeline tempstr loop rf.close wf.close
VBS调用IE并定时自动退出-源码 '---------------------------------------------------------- ' CODE BY: EAGLE ' Email    : [email protected] ' QQ    : 369029696 ' ' 函数名 : IEmsg ' 功    能 : 在屏幕右下角升起一个网页,可以用于提示信息 ' 特    点 : 可以将网页在自定义时间后自动关闭 ' ' 参    数 : IEmsg(title,msg,time) '    title -     提示信息的标题 '    msg -     提示信息的内容,换行符为"<br>" '    time -     设定网页关闭的时间,以秒为单位 ' ' 例    子 : Call IEmsg("标题-VBS","内容-hello word",10) '---------------------------------------------------------- Function IEmsg(title,msg,time)        On Error Resume Next        set Oie = createobject("internetexplorer.application")        screenw = createobject("htmlfile").parentWindow.screen.availWidth        screenh = createobject("htmlfile").parentWindow.screen.availHeight        With OIE             .left    = screenw -300             .top    = screenh             .height    = 200             .width    = 300             .menubar = 0             .toolbar = 0             .statusBar = 0             .visible = 1             .navigate    "About:Blank"        End With        Do while OIE.busy        Loop        With OIE.document             .Open             .WriteLn "<HTML><HEAD>"             .WriteLn "<style type="    & chr(34) &    "text/css"    & chr(34) &    ">"             .WriteLn " html { background:#e1f4ff;} .titlefont {font-size:19px;color:#ef0eef;}    .msgfont {font-size:14px;color:#000304;}"             .WriteLn "</style>"             .WriteLn "<TITLE>" & title & "</TITLE></HEAD>"             .WriteLn "<BODY>"             .WriteLn "<span class=" & chr(34) & "titlefont" & chr(34) & ">" & title & "</span><br><span class=" & chr(34) & "msgfont" & chr(34) & ">" & msg & "</font>"             .WriteLn "</BODY>"             .WriteLn "</HTML>"             .Close        End With        Do while Oie.top>screenh - Oie.height             Oie.top = Oie.top - 4        Loop        Wscript.sleep CDbl(time * 1000)        If Oie.Top = "" Then             Else             Do while Oie.top < screenh + 50                  Oie.top = Oie.top + 4             Loop             Oie.Quit        End If End Function
SendKeys参考文档 SendKeys 方法将一个或多个键击发送到活动窗口(仿佛是在键盘上击键一样)。 object.SendKeys(string) 参数 object WshShell 对象。 string 表示要发送的键击(一个或多个)的字符串值。 说明 使用 SendKeys 方法可以将键击发送到无自动化界面的应用程序中。多数键盘字符都可用一个键击表示。某些键盘字符由多个键击组合而成(例如,CTRL+SHIFT+HOME)。要发送单个键盘字符,请将字符本身作为 string 参数发送。例如,要发送字母 x,则请发送 string 参数 "x"。 注意 要发送空格,则请发送字符串 " "。 可使用 SendKeys 同时发送多个键击。为此,可将每个键击按顺序排列在一起,以此来创建表示一系列键击的复合字符串参数。例如,要发送键击 a、b 和 c,则需要发送字符串参数 "abc"。SendKeys 方法将某些字符用作字符的修饰符(而不使用其本身的含义)。这组特殊的字符可包括圆括号、中括号、大括号,以及: 加号 "+"、 插入记号 "^"、 百分号 "%"、 和“非”符号 "~"。 用大括号 "{}" 括起这些字符可以发送它们。例如,要发送加号,请使用字符串参数 "{+}"。SendKeys中使用的中括号 "[ ]" 无任何特殊含义,但是必须把它们括在大括号中,以便容纳确实要赋予其特殊含义的应用程序(例如,对于动态数据交换 (DDE) 就是这样)。 要发送左中括号字符,请发送字符串参数 "{[]";要发送右中括号字符,请发送字符串参数 "{]}"。 要发送左大括号字符,请发送字符串参数 "{{}";要发送右大括号字符,请发送字符串参数 "{}}"。 某些键击不生成字符(如 ENTER 和 TAB)。某些键击表示操作(如 BACKSPACE 和 BREAK)。要发送这些类型的键击,请发送下表中列出的参数: 键 参数 退格键 {BACKSPACE}、{BS} 或 {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL 或 DELETE {DELETE} 或 {DEL} 向下键 {DOWN} END {END} ENTER {ENTER} 或 ~ ESC {ESC} HELP {HELP} HOME {HOME} INS 或 INSERT {INSERT} 或 {INS} 向左键 {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC} 向右键 {RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB} 向上键 {UP} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14} F15 {F15} F16 {F16} 要发送由常规键击和 SHIFT、CTRL 或 ALT 组合而成的键盘字符,请创建表示该键击组合的复合字符串参数。可通过在常规键击之前添加一个或多个以下特殊字符来完成上述操作: 键 特殊字符 SHIFT + CTRL ^ ALT % 注意 这样使用时,不用大括号括起这些特殊字符。 要指定在按下多个其他键时,按下 SHIFT、CTRL 和 ALT 的组合,请创建复合字符串参数,用括号括起其中的组合键。例如,要发送的组合键指定: 如果在按 e 和 c 的同时按 SHIFT 键,则发送字符串参数 "+(ec)"。 如果在按 e 时只按 c(而不按 SHIFT),则发送字符串参数 "+ec"。 可使用 SendKeys 方法发送一种在一行内重复按键的键击。为此,要创建复合字符串参数,以指定要重复的键击,并在其后指定重复次数。可使用 {键击 数字} 形式的复合字符串参数来完成上述操作。例如,如果要发送 10 次 "x",则需要发送字符串参数 "{x 10}"。请确保在键击和数字之间有一个空格。 注意 只可以发送重复按一个键的键击。例如,可以发送 10 次 "x",但不可发送 10 次 "Ctrl+x"。 注意 不能向应用程序发送 PRINT SCREEN 键 {PRTSC}。 示例 下面的示例演示如何将一个 .wsf 文件用于以不同脚本语言(VBScript 和 Jscript)写成的两个作业。每个作业都运行 Windows 计算器并将它发送给键击以执行简单的计算。本文来自:DOS资源站(www.cmdos.net) 详细出处参考:http://www.cmdos.net/article/sort08/info-514.html
vbs 文件操作 VBS 文件操作 创建文本文件Set objFSO = CreateObject("Scripting.FileSystemObject")Set objFile = objFSO.CreateTextFile("C:\FSO\ScriptLog.txt")检察文件是否存在Set objFSO = CreateObject("Scripting.FileSystemObject")If objFSO.FileExists("C:\FSO\ScriptLog.txt") Then Set objFolder = objFSO.GetFile("C:\FSO\ScriptLog.txt")Else Wscript.Echo "File does not exist."End If删除文本文件Set objFSO = CreateObject("Scripting.FileSystemObject")objFSO.DeleteFile("C:\FSO\ScriptLog.txt")重命名文件Set objFSO = CreateObject("Scripting.FileSystemObject")objFSO.MoveFile "C:\FSO\ScriptLog.txt" , "C:\FSO\BackupLog.txt"文本操作读取全部内容Const ForReading = 1Set objFSO = CreateObject("Scripting.FileSystemObject")Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)strContents = objFile.ReadAllobjFile.Close一行行的读取文本文件内容Const ForReading = 1Set objFSO = CreateObject("Scripting.FileSystemObject")Set objTextFile = objFSO.OpenTextFile ("c:\scripts\servers.txt", ForReading)Do Until objTextFile.AtEndOfStream strComputer = objTextFile.ReadLine Wscript.Echo strComputerLoopobjTextFile.Close追加文本文件一行内容Const ForAppending = 8Set objFSO = CreateObject("Scripting.FileSystemObject")Set objTextFile = objFSO.OpenTextFile ("C:\Scripts\Service_Status.txt", ForAppending, True)objTextFile.WriteLine("追加的内容")objTextFile.Close有用的几个函数:替换:将Jim替换成James。strNewText = Replace(strText, "Jim ", "James ")用逗号分隔字符串:arrpath=split(strDN,",")wscript.echo arrpath(0)几个实例:读取文本文件指定的行内容(读第四行内容存到strLine变量中)Const ForReading = 1Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile("mylogfile.log", ForReading)For i = 1 to 3 objTextFile.ReadLine NextstrLine = objTextFile.ReadLine Wscript.Echo strLineobjTextFile.Close
1 下一页