
Недавно я восстановил много удаленных файлов с помощью инструмента photorec -http://www.cgsecurity.org/wiki/PhotoRec
Отличное спасение. Единственная проблема в том, что имена восстановленных файлов заменяются на случайную строку, которую генерирует эта программа. (Имя файла и структура каталогов были утеряны из-за удаления файлов пользователем).
Поэтому я запустил другую программу под названием photorecsorter, чтобы отсортировать восстановленные файлы по папкам по их расширениям (pdf в одной папке, ppt в другой и т. д.) http://builtbackwards.com/projects/photorec-sorter/
Я восстановил около 100 тыс. файлов, поэтому я не могу попросить пользователя открыть файлы и просмотреть содержимое, чтобы найти то, что он ищет. Я знаю, что метаданные файла документа Word (заголовки) могут помочь мне извлечь два ключевых элемента информации, которые затем могут быть использованы для переименования этого файла - название документа Word и дата последнего изменения. Как только я узнаю, как это сделать для документа Word, возможно, я смогу сделать это для других расширений Office и PDF самостоятельно. Я поискал несколько инструментов в Интернете, но прежде чем что-то попробовать - я хотел бы узнать, что могут предложить эксперты.
Спасибо
решение1
Файл VBS (VBScript) следующего вида должен помочь, по крайней мере, для документов Word:
Option Explicit
Dim objWord, objDoc
Set objWord = CreateObject("Word.Application")
objWord.Visible = False
objWord.DisplayAlerts = False
objWord.Documents.Open "C:\MyDoc.docx", False, True ' path, confirmconversions, readonly
Set objDoc = objWord.ActiveDocument
MsgBox "Title: """ & objDoc.BuiltInDocumentProperties("Title") & """"
MsgBox "Subject: """ & objDoc.BuiltInDocumentProperties("Subject") & """"
MsgBox "Author: """ & objDoc.BuiltInDocumentProperties("Author") & """"
MsgBox "Creation Date: """ & objDoc.BuiltInDocumentProperties("Creation Date") & """"
MsgBox "Last Save Time: """ & objDoc.BuiltInDocumentProperties("Last Save Time") & """"
objWord.Quit 0 ' wdDoNotSaveChanges
Set objWord = Nothing
Set objDoc = Nothing
Вы можете использоватьФайловаяСистемаОбъектдля перебора всех файлов DOC/DOCX в каталоге ипереименоватьих на основе возвращаемых строк свойств.
Для файлов Excel или PowerPoint используйтеExcel.ПриложениеилиPowerPoint.Приложениекогда вы создаете объекты документа. Если вы застряли, просто поищите в сети соответствующие руководства по автоматизации офиса VBScript.
Очевидно, что нет общего метода извлечения метаданных для всех форматов файлов, поэтому для других форматов, таких как PDF, потребуется совершенно другое решение. Я рекомендую вам поискать в сети или задать новый вопрос, если вам нужна помощь.