提前感谢您的帮助。我必须在我的办公室计算机上执行任务,这意味着我无法安装任何其他软件,所以我认为批处理文件可能是最简单的方法,即使它不是最有效的(尽管我欢迎其他解决方案,我可能无法在我的办公室计算机上安装软件。另外,请记住,我的答案编程经验非常少:)
基本上,我有一个包含一系列子文件夹的文件夹,每个文件夹都包含各种类型的文件(文本,电子邮件,基于文本的pdf,文档文档)。我还有一个包含数百个电子邮件地址的文本文件(或excel列)。我想使用批处理文件(或类似的方法)来运行列表中的每个电子邮件地址,并搜索每个文件夹中的各种文件的内容,如Windows Search。包含搜索短语的文件应自动移动到预先指定的文件夹(可能必须重命名或放入新的子文件夹,因为许多这些文件可能具有相同的名称)。最后,我们应该有一个文件夹(以及它的子文件夹),其中不包含其内容中列表中任何电子邮件地址的文件,另一个文件夹中只包含内容包含其中的电子邮件地址的文件文件(这些文件可以在子文件夹中,也可以重命名,或者是最方便的,只是不删除)。
(由于电子邮件地址列表在Excel中,我可以使用的另一个选项是使用某种VBA宏,如果它能够递归搜索文件夹中的文件内容。)
我希望这是有道理的,我很乐意澄清它是否合理。再次感谢您提供的任何帮助!
答案 0 :(得分:1)
自Windows 95以来,所有Windows计算机上都有编程语言调用vbscript。这可能会起作用。我认为你可以批量做到这一点。而且它已经过时了。
答案 1 :(得分:0)
VBScript - Google for" VBscript搜索文件内容"
像http://www.codeproject.com/Questions/524842/VbscriptplusToplussearchplusforplusaplusstringplus这样的结果应该会有所帮助。此外,如果您在使用递归文件夹搜索部分http://blogs.technet.com/b/heyscriptingguy/archive/2004/10/20/how-can-i-get-a-list-of-all-the-files-in-a-folder-and-its-subfolders.aspx时遇到问题可能会有所帮助。
VBScript几乎与VBA完全相同。如果您愿意,可以修改该代码以在Excel中作为宏运行。
如果您正在处理unicode文件,我建议使用FileSystemObject和TextStreams而不是本机VBA文件操作。
答案 2 :(得分:0)
这是一个简单的VBA例程,它使用ADO Provider查询Windows桌面搜索。这个脚本是我迄今为止唯一的体验,所以如果您有任何疑问,可以在这里查看:http://msdn.microsoft.com/en-us/library/windows/desktop/bb231256(v=vs.85).aspx
查找文件是相对棘手的部分 - 移动它们应该很容易; _0
Sub Tester()
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Search.CollatorDSO;" & _
"Extended Properties='Application=Windows';"
objRecordset.Open "SELECT System.ItemName, System.ItemFolderPathDisplay " & _
" FROM SystemIndex" & _
" WHERE SCOPE = 'file:C:/_Stuff/local files' " & _
" and contains('joe@corp.com')", objConnection
If Not objRecordset.EOF Then
objRecordset.MoveFirst
Do Until objRecordset.EOF
With objRecordset.Fields
Debug.Print .Item("System.ItemName"), _
.Item("System.ItemFolderPathDisplay")
End With
objRecordset.MoveNext
Loop
Else
Debug.Print "no records found"
End If
objRecordset.Close
Set objRecordset = Nothing
objConnection.Close
Set objConnection = Nothing
End Sub