Многие люди в моей организации не используют функции контактов Outlook, поэтому им нечего экспортировать. Вместо этого они полагаются на список автозаполнения. Янетспрашивая о том, какпередать этот список как есть, например, при получении новой рабочей станции. Иногда нам нужны эти списки в текстовом формате. Файлов нет, .nk2
поскольку учетные записи используют IMAP, поэтому Outlook хранит данные внутри (как описано в связанной справке). Есть ли простой способ получить их?
решение1
Я не думаю, что у меня самое эффективное решение, но оно сработало. У меня рабочая станция Linux, поэтому я вырвал текст, пиная и крича, используя инструменты, которые я уже знаю. Вы можете сделать то же самое с версиями Windows и/или оболочкой BASH, которая идет сGit для Windows, если у вас нет других подходящих программ для обработки файлов.
Используйте MFCMAPI на исходной машине для извлечения
IPM.Configuration.Autocomplete
файла в виде файла TXT. Это выходит за рамки, но вы можете следовать первой части инструкций по передаче, ссылка на которые приведена в вопросе.Откройте файл в текстовом редакторе, это XML. Перейдите к ,
<property>
содержащемуPR_ROAMING_BINARYSTREAM
, и сохраните только длинную шестнадцатеричную строку (0DF0...
) в<Value>
виде отдельного текстового файла, напримерautomplete-dump-hex.txt
. Сохраните его в ASCII/UTF-8, без отметки порядка байтов.Конвертировать этот файл, содержащий шестнадцатеричный поток, в двоичный. Я использовал команду типа этой:
xxd -r -p < automplete-dump-hex.txt > automplete-dump-raw.txt
Этот необработанный текст содержит простые текстовые части в UTF-16, little-endian, но также содержит двоичные данные, а строки разделены нулевыми байтами. Вы можете открыть его в любом подходящем редакторе и пойти своим путем, отсюда. Я открыл его в Vim, принудительно установив кодировку
:e ++enc=utf-16le automplete-dump-raw.txt
, затем перезаписал его как UTF-8 (:set fileencoding=utf-8
).Я рассматривал пустые символы как разделители строк и искал все, содержащие
@
, а затем преобразовывал пустые символы в новые строки:grep -zF @ automplete-dump-raw.txt | tr '\000' '\n' > automplete-dump-possibles.txt
Затем я привел последний выходной файл в более удобный формат (TSV):
- Сортировка и удаление повторяющихся строк (Vim
:sort u
); - Удалены строки с ложными данными;
- Использовал регулярное выражение replace для преобразования
name <email@address>
в два отдельных поля; - Удалены одинарные кавычки вокруг некоторых имен; и
- Снова удалены дубликаты, предпочтение отдано строкам с именем и адресом, а не только с адресом.
- Сортировка и удаление повторяющихся строк (Vim
Это успешно создало списки с сотнями уникальных адресов, что меня порадовало. Я думаю, что это описание шагов длиннее, чем сами шаги.