我想要搜索保存在同一个文件夹中的大量 Word 文件,并在每个文档中搜索关键字。
当识别出包含关键字的文档时,脚本应将文档文件名输出到文本文件报告中。
到目前为止,我已经创建了以下脚本,用于在指定的 Word 文档中搜索设置术语。此脚本显然是针对特定文件进行硬编码的,如果您可以演示如何使其搜索".doc"
文件夹中的所有文件,那就太好了。它也不会创建文本文件报告。
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open("L:\STSMP00001.docx")
Set objSelection = objWord.Selection
objSelection.Find.Forward = True
objSelection.Find.MatchWildcards = True
objSelection.Find.Text = "presentation"
Do While True
objSelection.Find.Execute
If objSelection.Find.Found Then
strWord = objSelection.Text
strWord = Replace(strWord, "[[", "")
strWord = Replace(strWord, "]]", "")
Wscript.Echo strWord
Else
Exit Do
End If
Loop
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open("L:\STSMP00002.docx")
Set objSelection = objWord.Selection
objSelection.Find.Forward = True
objSelection.Find.MatchWildcards = True
objSelection.Find.Text = "presentation"
Do While True
objSelection.Find.Execute
If objSelection.Find.Found Then
strWord = objSelection.Text
strWord = Replace(strWord, "[[", "")
strWord = Replace(strWord, "]]", "")
Wscript.Echo strWord
Else
Exit Do
End If
Loop
答案1
以下代码片段修改自Ansgar Wiechers 发帖,允许您指定一个文件夹,然后根据扩展名创建一个列表:
Set fso = CreateObject("Scripting.FileSystemObject")
Set objLog = fso.CreateTextFile("c:\temp\out.log", true)
Set list = CreateObject("ADOR.Recordset")
list.Fields.Append "name", 200, 255
'list.Fields.Append "date", 7
list.Open
For Each f In fso.GetFolder("C:\temp").Files
If (UCase(Right(f.Path,4))=".DOC" or UCase(Right(f.Path,5))=".DOCX") then
list.AddNew
list("name").Value = f.Path
'list("date").Value = f.DateLastModified
list.Update
end if
Next
list.MoveFirst
Do Until list.EOF
WScript.Echo list("name").Value
objLog.write list("name").Value
list.MoveNext
Loop
list.Close
objLog.Close
GetFolder("C:\temp")
使用文件所在路径和InStr(f.Path,".txt")
要包含的文档扩展名部分来修改。例如,找到的任何文件都将写入屏幕,并将c:\temp\out.log
其包含在代码中应该并不困难,这样您就可以遍历文件夹并找到带有 .DOC(或 .DOCX)的文件。
回答以下作者的评论:
获取文件夹中文件列表的代码c:\temp
从for each
循环开始。我们查看检索到的每个文件名,如果文件名中包含字符串“.txt”,则会将其添加到对象中list
。您可以更改语句的逻辑,if...end if
方法是首先将.txt
部分更改为.doc
,然后or Instr(f.path,".docx")
在前面添加一个then
,以便找到 .DOC 和 .DOCX 文件。在我看来,我可能会将更改为Instr
包含字符串最右边的 4 个和 5 个字符,以便只使用扩展名。就目前而言,如果有一个名为“this is my.txt file.pdf”的文件,它将被选中,因为在其中找到了字符串.txt
。我已经做了更改。就目前而言,脚本应该可以找到文件夹中的任何 .DOC 或 .DOCX 文件c:\temp
希望这可以帮助!