用通配符搜索指定文件夹中的文件

来源 :电脑爱好者 | 被引量 : 0次 | 上传用户:xgz521521
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  上期讲到:VBS脚本中,方法(method)也是构成语句(sentence)的重要部分。方法必须引用一个明确的对象(object)/集合(collection),使用句点(.)表示对对象的引用。方法做为让外界访问对象的工具。目前VBS脚本中有46个方法。下面介绍Do...Loop和While...Wend语句和用法。
  
  一、使用通配符搜索指定文件夹的文件并将结果输出到文件
  本期在上期的基础上扩展支持“?*”通配符的文件搜索。脚本范例只给出支持“?*”通配符的文件搜索算法部分的代码,读者可结合上期范例自行修改替换代码。遵循微软Windows“搜索”使用通配符的约定。
  Sub SearchTheName(objFolder)
   If arrOptions(Folder_Name) = 1 Then
  For Each objSubFolder In objFolder.SubFolders
   strName = objSubFolder.Name
   If 0 <> FindInName(strName, strFindKeyWord) Then
  strFoundFile = strFoundFile & objSubFolder.Path & vbCrLf
   End If
  Next
   End If
   For Each objFile In objFolder.Files
  If 0 = InStrRev(strFindKeyWord, ".") Then
   strName = objFso.GetBaseName(objFile.Path)
  Else strName = objFile.Name
  End If
  If 0 <> FindInName(strName, strFindKeyWord) Then
   strFoundFile = strFoundFile & objFile.Path & vbCrLf
  End If
   Next
   If arrOptions(Sub_Folder) <> 1 Then Exit Sub
   For Each objSubfolder In objFolder.SubFolders
  SearchTheName objSubfolder
   Next
  End Sub
  Function FindInName(strName, strFindWord)
   If 0 = InStr(strFindWord, "?") And 0 = InStr(strFindWord, "*") Then
  FindInName = InStr(1, strName, strFindWord, _
   arrOptions(Match_Case) Xor 1)
  Exit Function
   Else
  arrFindWord = Split(strFindWord, "*")
  intCount = 1
  For I = 0 To UBound(arrFindWord)
   If I = 0 Then
  For J = 1 To Len(arrFindWord(I))
   If Mid(arrFindWord(I), J, 1) <> "?" Then
  If (arrOptions(Match_Case)=0 And _
   UCase(Mid(arrFindWord(I), J, 1)) <> UCase(Mid(strName, J, 1))) Or _
   (arrOptions(Match_Case)=1 And _
   Mid(arrFindWord(I), J, 1) <> Mid(strName, J, 1)) Then
   FindInName = 0 : Exit Function
  Else intCount = intCount + 1
  End If
   Else intCount = intCount + 1
   End If
  Next
   Else
  For J = 1 To Len(arrFindWord(I))
   If Mid(arrFindWord(I), J, 1) <> "?" Then
   intPos = InStr(intCount, strName, Mid(arrFindWord(I), J, 1), _
  arrOptions(Match_Case) Xor 1)
  If J = 1 Then intCount = intPos
  If intPos = 0 Then
   FindInName = 0 : Exit Function
  ElseIf intPos = intCount Then
   intCount = intCount + 1
  Else FindInName = 0 : Exit Function
  End If
   Else
  If intCount > Len(strName) Then
   FindInName = 0 : Exit Function
  Else intCount = intCount + 1
  End If
   End If
  Next
   End If
  Next
   End If
   FindInName = 1
  End Function
  
  二、通透理解Do...Loop和While...Wend循环语句
  1.Do...Loop语句的用法
  Do...Loop语句有前条件与后条件两种语法:
  Do [{While} 条件] 或者:
  [语句] Do
  [Exit Do] [语句]
  [语句][Exit Do]
  Loop [语句]
  Loop [{Until} 条件]
  前条件语法在启动循环之前必须先测试条件,当条件为真时或条件变为真之前启动循环执行一系列语句,而后条件语法则无条件启动循环,执行一系列语句,其中经常遇到由If...Then语句判断结果为真值执行Exit Do语句即退出循环。当执行到Loop时返回测试条件开始下一次循环,一直到条件为假(False)或条件变为真时结束执行循环。前条件语法多用于防止非法操作,像逐行读取文本文件或者逐个字符读取文本文件中一行文本,可防止指针超越文件结束或行末。后条件语法多用于某种重复计算达到一个设定的条件值时结束。While与Until的区别在于前者条件为真时执行循环,后者在条件变为真之前(即假)时执行循环,二者只能取一,没有什么特殊的区别。同样,Do...Loop循环语句可以多重嵌套循环。
  2.While...Wend语句的用法
  While 条件
  [语句]
  Wend
  如果条件为真,则执行循环内所有语句,然后重新测试条件。如果条件仍为真,则重复执行循环,直到条件不为真时结束执行循环。值得注意使用While...Wend语句如果条件设置不当可能造成死循环。同样,While...Wend循环语句可以多重嵌套循环。
  3.下期预告:介绍Select Case语句和用法。
其他文献
在系统托盘区中通常都会显示一个当前系统时间的小图标,如果用鼠标双击它还会弹出一个更加详细的日历窗口,显示今天的日期、星期几,当前时间等信息。不过,如果你不对它动点手脚,它永远只能显示阳历时间,而我们中国人习惯使用农历,如何让自己的系统时间显示为农历呢?只要到http://www.uuland.com/download/Winkld.rar下载一个名为“Winkld”的小工具,将其安装到系统中并重启
期刊
这样炎热的天气,敢于带妆出门的荚女们一定都有一套自己的防脱妆方法,一起来分享街头达人们的防脱心得吧!
期刊
现在,各种功能强大的浏览器或是第三方广告拦截程序,将随着网页一道出现的各种广告已经收敛不少,给我们用户也带来诸多方便。而现在很多软件却又在另一方树起广告大旗,时不时地影响着我们的心情。例如,MSNMessenger、FlashGet、迅雷等,真有广告无处不在的感觉,为此,下面教大家几招,专门对付这些讨厌的软件广告:    01 赶出Messenger 8中的广告  MSN Messenger中一直
期刊
随着时间的变化,很多人早就不满足拍照留念了,DV录像已经成了一种时尚,不过,DV使用久了很容易出现一些小问题。其实,DV使用的存储介质依旧是磁带,既然有磁,那就注定会有磁粉脱落问题,久而久之,磁头越来越脏,录像效果也就越来越差了。表现出来,就是无论你使用什么品质的DV磁带,拍摄出来的内容画面不是那么清晰,甚至还会有雪花之类的“杂质”。  但是,很多人都不知道该如何解决,以为是DV故障,还要送修。其
期刊
眼下是大学生求职应聘的黄金季节,人事主管小刘忙得不亦乐乎,她负责把应聘者的个人信息录入Excel,确保信息真实可信是必须解决的问题。为此,小刘特地向信息部主管小张求教,学会了从身份证“挖掘”个人信息的方法,又快又好地完成了招聘的前期准备工作。可谓:“整理工作无穷尽,信息问题难小刘,Excel函数应用,从此更上一层楼。”    一、数据录入快又准    小刘负责录入的个人信息内容如图1所示,除了“序
期刊
人生若是一次旅行,就应带着好心情去看沿途的风景。这样的旅程里,女人才会一路如花儿般妖娆。停歇时,亦不忘补水养颜,也许下一时刻,就有一场或浪漫或美丽的惊艳邂逅。让那美丽的邂逅,如一滴晶莹透亮的雨珠,化作汩汩清泉,滋润你的心田。抑或是似醇香的美酒让人陶醉一生,完美你的旅程。  美庭是北京一家摄影工作室的当家人,作为一家高端摄影机构的领导者,美庭是忙碌的。但她说,工作永远也做不完,再忙碌也要留一份惬意给
期刊
近期很多朋友反映自己的电脑网速变得很慢,但是不管是杀毒软件还是网络防火墙都在歌颂太平盛世似的,没有发出任何情报,这是什么原因呢?不知道听到这样的消息,你会不会害怕,一种所谓会隐身的潜行木马正在你的电脑中在防火墙的阴影下悄悄地盗取你的资料和各种信息。它们是确实存在的,而且制作它们也相当的简单,现在就让我们拆穿它们的真面目,把它们曝光在日光之下,并且给你武器,让你亲手把它们消灭掉!    不被查杀的潜
期刊
先用卷发棒给外层的头发稍微上点卷,两鬓做出外翻的发式,蓬发的效果更明显:
期刊
柳絮飞下班不回家,在单位和MM视频聊天已经成为CFan的一段佳话了。说起他从拥有第一个摄像头到现在能够同时跟N个MM视聊,经历了不知多少艰辛,每每单位有同事摄像头有问题,柳絮飞总是从人群中跳出来,一幅过来人的神色将他玩摄像头的经验娓娓道来。每次帮人搞定之后柳絮飞都相当得意,在我们的威逼利诱之下,他终于将他的全部经验和盘托出,不管你遇到何种摄像头故障,总可在下文找到解决的方法。    一、从安装摄像
期刊
Java语言让互联网插上了腾飞的翅膀,让Java之父James Gosling始料未及的是,互联网正在逐渐过渡到2.0时代。也许是Java的成长速度过慢了,也许是James的想法跟不上时代了,面对媒体的镁光灯,Java之父对Web 2.0的概念表现出来的是出奇的陌生。为了发掘Web 2.0的真谛,我们就像莘莘学子,怀揣着一颗躁动不安的心,找到了一直都被认为是中国Web 2.0的一面旗帜的博客网CT
期刊