Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38877
  • 博文数量: 16
  • 博客积分: 550
  • 博客等级: 中士
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2005-05-16 22:49
个人简介

理科男,对未来有超凡的兴趣

文章分类

全部博文(16)

文章存档

2023年(1)

2016年(1)

2011年(1)

2005年(13)

我的朋友
最近访客

分类:

2005-08-16 23:25:05

对上个脚本稍加改动,使用正则表达式(Regular Expression ),可以方便我们的判断过程。修改后的脚本程序如下所示。注意我们这里排除的是不压缩的文件类型。

call main()

Sub main()
    Dim fs              '文件系统。
    Dim f               'folder
    Dim fc              'files
    Dim s                   'string
    Dim ws                  'SHELL。
    Dim subfs
    Dim fi
   
    '创建SHELL。
    Set ws = CreateObject("WScript.Shell")
   
    '创建文件对象。
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(ws.currentdirectory)
 Handle_files(ws.currentdirectory)

    Set subfs = f.SubFolders
    '遍历每个子目录。
    For Each fi In subfs
        Call ListSub(fi.Path)
    Next
End Sub

Sub ListSub(filename)
    On Error Resume Next
    Dim subfs   '子目录。
   
 '首先处理当前目录。
 Handle_Files(filename)

    '创建文件对象。
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(filename)
    Set subfs = f.SubFolders
    For Each fi In subfs
        Call ListSub(fi.Path)
    Next
End Sub

'处理每个目录下的文件。
Sub Handle_Files(foldername)
    '创建文件对象。
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(foldername)
    Set fc = f.Files

     '创建SHELL。
    Set ws = CreateObject("WScript.Shell")
  
    '遍历文件对象。
    For Each fl In fc
  if ( RegExpTest(".vbs|.rar|.zip",fl.name) = false) then
            '进行压缩。
            s = "winrar M -ep " & fl.Path & ".rar " & fl.Path
   output s
            ws.Run s, 0, True
        End If
    Next
End Sub

sub output(string)
 wscript.echo string
end sub

'使用正则表达式进行判断。
Function RegExpTest(patrn, strng)
  Dim regEx, retVal            ' Create variable.
  Set regEx = New RegExp         ' Create regular expression.
  regEx.Pattern = patrn         ' Set pattern.
  regEx.IgnoreCase = False      ' Set case sensitivity.
  retVal = regEx.Test(strng)      ' Execute the search test.
  If retVal Then
    RegExpTest = true
  Else
    RegExpTest = false
  End If
End Function


阅读(1090) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~