昨晚客户发来邮件说,要求写个VB的小脚本来替换文件中指定的字符串,当时第一反应是,你直接拿个文本编辑器用查找/替换功能不就搞定了嘛,不过立刻就又反应过来,客户就是上帝。好吧,上帝要求我写个VB的脚本,我就满足上帝的需要,由于之前没有接触过VB脚本,所以就现学现用,磕磕绊绊完成了以下这么一个样例,写的不好,有不妥之处,还望各位大神不吝赐教,小的一定虚心求教,感激涕零。
inputs=inputbox("Please enter the parameters,split them with '_' Param1:FileName Param2:oldStr Param3:newStr")简单的介绍下使用方式,拷贝源码,粘贴到文件中,保存为.vbs格式文件,双击即可执行。将要处理的文件放在与脚本同级目录下,运行脚本之后,需要输入三个参数,参数一是文件名,参数二是要查找的字符串,参数三是要替换成的字符串,参数之间以"_"下划线来进行分割,文件名不为空,要查找的字符串和替换成的字符串可以为空,如果为空,则会将原文件中的内容输出到”原文件名_New.格式"文件中。
params=split(inputs,"_")
currentPath=CreateObject("Scripting.FileSystemObject").GetFolder(".").Path
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(currentPath & "\" & params(0)) Then
Set objFile=objFSO.OpenTextFile(currentPath & "\" & params(0))
str=objFile.ReadAll
objFile.close
oldStr=params(1)
newStr=params(2)
If oldStr <> "" Then
str=replace(str,oldStr,newStr)
tmpArray=split(params(0),".")
Set newFile=objFSO.CreateTextFile(currentPath & "\" & tmpArray(0) & "_New" & ".txt")
newFile.write(str)
newFile.close
End If
Else
Wscript.Echo "File does not exist."
End If
最后简单的总结下我刚接触VB几个小时的一些比较特殊的地方:
1,VB是Case InSensitive的,也就是大小写不敏感
2,VB脚本中,获取Array数组的值的方式为tmpArray(0),注意,是小括号,不是之前熟悉的中括号,我在这上面卡了挺长时间
3,VB脚本中,&符号前后要有空格分开,其他的符号,例如,不等于号<>前后也需要有空格
很多时候我也会觉得自己现在涉及到的东西太多太杂,不过我觉得还是侧重点的问题吧,多学习多总结。