曲则全,枉则直,洼则盈,敝则新,少则得,多则惑。 是以圣人抱一为天下式。不自见,故明;不自是,故彰;不自伐,故有功;不自矜,故长。

VBS小结(二)

上一篇 / 下一篇  2009-10-07 00:06:24 / 个人分类:脚本语言

5.用VBS读取文件夹里的文件信息

FSO(FileSystemOoject)不仅可以对文件进行读写操作,还可以获取目录和文件,然后对目录和文件操作。

Set fso=CreateObject("Scripting.FileSystemObject")
Set myFolder=fso.GetFolder("e:\test")
For Each myfile In myFolder.files
WScript.Echo myfile.Name
WScript.Echo myfile.DateCreated
Next
Set myFolder=Nothing
Set fso=Nothing

可以打印出在e:\test,所有文件的名字和创建时间。

6.VBS更改文件内容

FSO的OpenTextFile有三种模式,只读,只写,和追加。

当只读时,是打开一个空文本,然后向里面写数据,所以如果想要删掉一个文件中的所有空行,不是很容易。

后来想到用数组进行转移,把文件里的内容保存到数组中,就可以了。

Function readall(StrFile,myFold)
Set myFile=CreateObject("Scripting.FileSystemObject")
mystr=myFold&"\"&StrFile
Set fname=myFile.OpenTextFile(mystr,1)
Dim temp(1000)
Do While Not fname.AtEndOfStream
temp(i)=fname.ReadLine
i=i+1
loop
readall=temp
End Function

返回的是一个有1000个元素的数组,然后再新建一个文件,将数组里的内容写到新文件中,当数组元素为空的时候,跳过不写,就可以去掉空行了。

7.正则表达式

前天被一个正则表达式困扰了很久。"你好.234",不晓得怎么匹配"你好",后来灵光一闪,发现只要用(.*)[^\.0-9]就可以了。

str="你们.243"
Set myreg=New RegExp
myreg.Pattern="(.*)[^\.0-9]"
Set mymatches=myreg.Execute(str)
For Each mytemp In mymatches
WScript.Echo mytemp.Value
next
Set mymatch=Nothing
Set myreg=nothing

觉得正则表达式要多练,多想,才能找到最合适的匹配方式。

正则表达式提供了更广阔的思路,比如将文件夹里所有txt的文件更改为htm格式的,可以先匹配txt,查找文件是不是txt格式,然后再匹配“文件名.”,再将文件名字符串拼接htm就可以了。还比如,对于html文件,匹配<title>(.*)</title>,可以取出html中的title信息等等。


补充:正则表达式[\u4e00-\u9fa5]*匹配中文


TAG:

 

评分:0

我来说两句

日历

« 2024-03-26  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 46180
  • 日志数: 33
  • 文件数: 1
  • 建立时间: 2009-07-10
  • 更新时间: 2010-12-07

RSS订阅

Open Toolbar