别慌,文件找不到时我们应该这样做(二)

上一篇我们简单讨论了文件管理5S的部分方法。

通篇理论,毫无情趣,呵呵,不过请小伙伴们放心,这篇我们来点实际的哈。

前篇链接:别慌,文件找不到时我们应该这样做(一)


我们说想要查找一个文件,通常的做法是通过无数次鼠标点击,挨个翻找文件夹。

又或是由于文件夹太多,而干脆直接使用系统自带的搜索栏来查找。

但不管是用哪个办法,都有可能因为前期文档维护管理不善而最终导致未能找到想要的文件。

有的小伙伴要举手了,那可以用神器 Everything 啊!

没错,Everything 可以说功能是十分强大的,但是对于新手小白来说,这款工具有时似乎又有点杀鸡用牛刀的感觉。

特别是在使用正则表达式时,就算是老鸟也不敢说能操作自如吧。


正则表达式是一种反人类的存在,对新手小白极不友好。

毫不谦虚地说,我也是小白一枚,所以当我看到正则表达式时,也是默默举起了双手。

于是乎,我就转了转脑筋,动了动手,花了点时间,制作了一个简易版的 Everything ,人称 网管小贾的文件搜索器 (文末有下载)。

借 Everything 的大名,参考山寨了它的一小部分搜索文件的功能。

如果说 Everything 功能十分强大,那么我的这款搜索文件器就是0.9分强大。

那么这款小工具怎么玩呢?

来,我带大家试玩一把看看吧。

程序运行环境:Windows 10 + Office 2016


选择搜索条件,自动生成正则表达式

基本使用其实挺简单的,就是先选择你想要查找的文件夹路径,然后指定正则表达式后点击“搜索文件”即可。

双击文件夹路径文本框,然后用鼠标点选路径,也可以直接手输路径,比如 D:\sysadm.cc


正则表达式可以通过以下几种方法自动生成。

1、按任意字符


我们习惯输入文件名的部分文字作为搜索条件,但 Windows 自带的搜索好像无法做到多个关键字符查询。

什么意思?

简单地说,就是同一时间我想找多个文件,但这几个文件的名称关键字符并不相同。

而利用正则表达式就可以过滤多个关键字符来查找多数匹配的文件。


举例说明:

比如你可以查找文件名中有“一年级”和“二年级”字样的学生考试成绩文件。

一般情况下,含有”一年级“和”二年级“字样的文件通常不止唯一的一个,所以需要同时把它们找出来。

那么正则表达式可以写成:一年级|二年级

挺简单的,有一个写一个,有多个就用竖线分隔写多个。


2、按文件类型


这个不用多说吧,Windows 系统都有扩展名的概念,就是根据文件扩展名来搜索。


举例说明:

比如我想同时查找 Excel 文档和 PPT 文档,那么就可以勾选 Excel文档PPT文档 ,确定后开始搜索,结果就会出现相应的两种类型的文档。

参考正则表达式:(?:xls|xlsx|xlam|ppt|pptx)$


3、任意字符+文件类型


这种方法其实是前两种的混搭,也很容易理解。


举例说明:

我想查找文件名中含有 a 或 b 字符,并且是 Excel 文档的文件。

参考正则表达式:(a|b).*(xls|xlsx|xlam)$


4、按修改日期或按文件大小

前几种文件搜索方法一般都够用了,但是吧,如果查出来的结果文件数量太过多怎么办呢?

有两种更精准、更简单易行的办法:一是限制日期范围,二是限制文件大小。


这么一来,基本上就可以把查找文件圈定在小范围之内,省时又省力啊。

不过要开启这两项功能需要注册,当然,既然分享给小伙伴们,肯定是免费注册使用了。


搜索结果中,你可以双击项目行,它会打开所选文件的所在文件夹。

另外,如果你熟练掌握正则表达式的话,也是可以直接手输正则再搜索的,完全没问题哈!


查找最近访问的 Office 文档

有的时候,当你怎么也找不到过去的文档时,是不是曾经试图通过查看 “Office 最近打开文档”来判断想要找的文件在哪里呢?


这是一个好主意,至少可以知道最近自己打开或编辑过哪些文档。

只不过操作和查看起来不是那么直观方便。

现在可以通过网管小贾的文件搜索器来统一查看最近访问的文档了。

点击界面中的 [查找 Office 最近文件] ,即可开始搜索最近访问过的文档。


这里需要注意几点:

1、程序默认搜索非微软登录用户的Office文档。

2、如果你是 Office365 用户,也就是你有微软帐号可以联网的,那么就要勾选 微软登录用户(如Office365) 一项,然后点击 刷新注册表项 ,在 选择登录用户项 的下拉项中选好相应的用户,最后再搜索。

3、另外搜索也是支持正则表达式过滤的,可以发挥你的想像随意操作。

4、最后需要请小伙伴们注意的是,查找结果只是访问记录,有些文件可能并不一定真实存在,所以只作为查找文档线索以供参考。



分享我的制作过程中遇到的一些坑


坑一:Office最近打开文件的记录在哪里?

一开始我猜测,它应该藏在注册表中。

经过一番苦苦追寻,最终结果印证了我只猜对了一半。

答案是,Office 访问记录的确可以在注册表中找到它们的踪迹,但却并不是在固定场所。

这个不确定性给通过编程方式来获取记录的操作带来了不小的麻烦。

以 Office2016 版本为例,通常有两种方式存放在注册表路径中。


第一种,本机安装直接使用Office,没有使用微软帐号登录到互联网中。

那么这些之前被访问过的文档会被放在下面的路径中,这是系统默认情况。

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\File MRU
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\File MRU
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\PowerPoint\File MRU
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Access\File MRU
 


第二种,就是通过登录微软帐号连接到了互联网中使用的Office,通常叫作 Office365 。

这种情况由于在同一个本地登录电脑用户下,可能存在多个互联网帐号登录的情况,所以很显然历史访问记录会被放在与第一种完全不同的其他地方,类似于如下面的路径中。

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\User MRU\ABCD_123456789ABCD\File MRU
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\User MRU\ABCD_987654321DCBA\File MRU
 

这里仅以Excel举例,其中的 ABCD_123456789ABCDABCD_987654321DCBA 即为不同的登录帐号字符串。


两种方式保存访问文件记录,有效地解决了多用户登录的情况。

这个坑对于通过编程实现获取信息来说是有点小麻烦,但下面的这个坑就有点大得吓人了。


坑二:最近打开文档的访问时间

这个访问时间是个很重要的因素,作为查找线索,时间总是不可或缺的。

在前面讲到的注册表项 File MRU 中,按顺序读取 Item + 数字序列 形式的键值即可。

其中包含了我所要的全部信息,类似于如下:

[F00000000][T01D6E0414E7254A0][O00000000]*C:\Users\Admin\Desktop\abc.xlsx
 

这些键值中有文件路径及文件名,更重要的是还有访问日期和时间。

但令我非常沮丧的是,这个以字母 T 开头的时间字符串却并不容易转换成人类直观可用的通用格式。

这到底是个什么时间格式啊?!


我花了前前后后好几天的时间,到最后费了老牛鼻子劲我才搞懂了它原来是 Windows 大尾端十六进制的时间格式。

小伙伴们肯定要懵逼了:“你在说啥子?”

简而言之,它是指距离 1601-0-01 00:00:00 的时间长度,而这个长度是100纳秒的倍数。

好吧,对于这种很奇怪的时间格式,限于篇幅我写了另外一篇文章来专门说明,并给了相应的转换算法和代码。

《十六进制的时间格式到底是个什么鬼?》

总而言之,这种时间格式通过程序转换可以合理地转换成你看得懂的样子了。


网管小贾的文件搜索器安装包(2.86M)

下载链接:https://pan.baidu.com/s/1VQWALJvIAj9HqdAW8UJsOQ

提取码:


输入密码,继续阅读



扫码关注微信公众号,回复文章ID免费获取密码


<文章ID:000797>


写在最后

最后当然还是要说,程序还是有很多缺点。

比如搜索文件时并未建立文件索引,所以当文件数量众多时速度会非常慢。

所以说,小伙伴们平时要养成文件管理的好习惯。

程序中有诸多不足,与大神之间的差距大概有个几亿光年,请小伙伴们见谅!

如有什么好的意见和建议,欢迎小伙伴们在留言区讨论!


WeChat@网管小贾 | www.sysadm.cc



提交评论

安全码
刷新

© 2020-present 网管小贾 | 微信公众号 @网管小贾
许可协议:CC-BY-NC 4.0 | 转载文章请注明作者出处及相关链接