Chinaunix首页 | 论坛 | 博客
  • 博客访问: 47877
  • 博文数量: 28
  • 博客积分: 760
  • 博客等级: 军士长
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-05 17:46
文章分类

全部博文(28)

文章存档

2017年(1)

2010年(7)

2009年(10)

2008年(10)

我的朋友

分类:

2008-11-12 07:48:31

查找某一目录下的所有文件是否包含特定字符,并将结果写入文本文件。点击下载源文件

'==============================================================================================
Dim fso
Dim parentpath
Dim parentfolder
Dim resultfilename
Dim inputfilename
Dim inputfile
Dim resultfile

Set fso = CreateObject("scripting.filesystemobject")
'Get target folder path that all files under it and its sub folder will be search for.
parentpath = Trim(InputBox ("Please Input Find Target Path","Target Path"))
'Get input file that contains word which you want search it in the target folder.
inputfilename = Trim(InputBox("Please Input INPUT File Path","File Path"))
Set parentfolder = fso.GetFolder(parentpath)
resultfilename=parentfolder.ParentFolder.Path & "\result_compare.txt"
Set inputfile = fso.OpenTextFile(inputfilename)
Set resultfile = fso.CreateTextFile(resultfilename)
Do until inputfile.AtEndOfStream
    inputfileline=Trim(inputfile.ReadLine)
    If inputfileline<>"" Then
        resultfile.WriteLine "==================================================================="
        resultfile.WriteLine "Parent Folder : " & parentpath
        resultfile.WriteLine "Find String : " & inputfileline
        resultfile.WriteBlankLines 1
        resultfile.WriteLine "File name" & vbTab & "Line Number" & vbTab & "Target String"

        processFiles parentfolder,inputfileline,resultfile,parentpath
        
        resultfile.WriteLine "==================================================================="
    End If
Loop
Set fso=Nothing
WScript.Quit

'==============================================================================================
Sub processFiles (parentfolder,inputfileline,resultfile,parentpath)
    For Each subfile In parentfolder.files
        Set ts=subfile.OpenAsTextStream
        line=0
        Do until ts.AtEndOfStream
            line=line+1
            content=Trim(ts.ReadLine)
            If content<>"" Then
                If InStr(LCase(content),LCase(inputfileline))>0 Then
                    resultfile.WriteLine Replace(subfile.Path,parentpath,"") & vbTab & line & vbTab & content
                End If
            End If
        Loop
    Next
    'This is important for this sub.
    If parentfolder.SubFolders Is Nothing Then
        Exit Sub
    End If
    For Each subsubfolder In parentfolder.SubFolders
        processFiles subsubfolder,inputfileline,resultfile,parentpath
    Next
End Sub
'==============================================================================================

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