2013-11-01 4 views
0

Заранее за вашу помощь. Я должен выполнить задачу на своем офисном компьютере, что означает, что я не могу установить какое-либо дополнительное программное обеспечение, поэтому я думаю, что пакетный файл может быть самым простым способом сделать это, даже если он не самый эффективный (хотя я приветствую другие решения, которые я может обойтись без установки программного обеспечения на моем офисном компьютере). Кроме того, имейте в виду, что у меня очень мало опыта программирования в ваших ответах :)Windows 7 пакетный поиск адресов электронной почты

В принципе, у меня есть папка с рядом подпапок в ней, каждая из которых полна файлов разных типов (текст, электронные письма, текстовые pdf-файлы, текстовые документы). У меня также есть текстовый файл (или столбец Excel) с сотнями адресов электронной почты. Я хочу использовать командный файл (или аналогичный метод) для запуска каждого адреса электронной почты в списке и поиска по содержимому различных файлов в каждой папке, например, в Windows Search. Файлы, содержащие поисковую фразу, должны автоматически перемещаться в предварительно определенную папку (возможно, ее необходимо переименовать или поместить в новую подпапку, так как многие из этих файлов могут иметь одно и то же имя). В конце концов, у нас должна быть одна папка (а также ее вложенные папки), которая не содержит файлов, которые имеют какие-либо из адресов электронной почты из списка в их содержимом, и другую папку, в которой есть только файлы с содержанием, содержащим адреса электронной почты в их файлы (они могут быть в подпапках или переименованы, или что самое удобное, просто не удаляются).

(Поскольку список адресов электронной почты в Excel, другой вариант, я мог развлечь будет использовать какие-то VBA макросов, если это может искать содержимое файлов в папке рекурсивно.)

Я надеюсь, что это имеет смысл, и я рад прояснить, если это не так. Опять же, спасибо за любую помощь, которую вы можете предоставить!

+0

Какая версия из Excel у вас есть? –

+0

Поиск в Windows Desktop имеет API, к которому можно получить доступ с помощью ado. Попробуйте прочитать на этом –

+0

, что есть приложение imo no CLI для поиска 'pdf' файлов. – Endoro

ответ

1

Существует вызов языка программирования vbscript, который находится на всех компьютерах Windows с Windows 95. Это может сделать работу. Я думаю, вы можете сделать это с помощью партии. Плюс это устарело.

0

VBScript - Google для «содержимого файла поиска 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 в виде макроса, если хотите.

Я бы рекомендовал использовать FileSystemObject и TextStream вместо собственных файлов VBA, если вы имеете дело с файлами unicode.

+0

Я проверю эти ссылки. У меня небольшой опыт работы с визуальным базовым, но это было давно, и это звучит так, как будто это далеко за пределами моих навыков ... –

0

Вот простая процедура VBA, которая запрашивает поиск на рабочем столе Windows с использованием поставщика ADO. Этот скрипт мой единственный опыт работы с ней на сегодняшний день, поэтому если у вас есть вопросы, вы можете проверить здесь: 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('[email protected]')", 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 
+0

Мне нужно подождать до завтра, чтобы проверить это, но я буду дайте вам знать мои мысли.Независимо от того, хотя, спасибо за такую ​​помощь! Это мой первый раз, когда я использую это сообщество, и я нахожу всех настолько полезными, а не славные и оскорбительные ответы, которые я получил на других форумах в прошлом. –

Смежные вопросы