我所在组织中的许多人不使用 Outlook 的联系人功能,因此他们没有可导出的联系人。相反,他们依赖自动完成列表。我不是询问如何按原样转移此列表例如,当获得新的工作站时。有时我们需要文本格式的这些列表。没有.nk2
文件,因为帐户使用 IMAP,所以 Outlook 将数据存储在内部(如链接的帮助中所述)。有没有简单的方法来获取它们?
答案1
我不认为我的解决方案是最有效的,但它确实有效。我有一台 Linux 工作站,所以我用我已经知道的工具撕掉了文本,又踢又叫。您可能能够使用 Windows 版本和/或随附的 BASH shell 执行相同的操作适用于 Windows 的 Git,如果您没有其他合适的程序来处理文件。
在源机器上使用 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、小端字节序,但它也包含二进制数据,并且字符串以空字节分隔。您可以在任何合适的编辑器中打开它,然后从这里开始按照自己的方式操作。我在 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
); - 删除虚假数据行;
- 使用正则表达式替换转换
name <email@address>
为两个单独的字段; - 删除了一些名称周围的单引号;并且
- 再次进行重复数据删除,优先选择包含姓名+地址的行,而不是仅有地址的行。
- 排序并删除重复的行(Vim
这成功生成了包含数百个唯一地址的列表,我对此感到满意。我认为这些步骤的描述比实际步骤要长。