在工作中我经常遇到一种情况:提取某个文件夹下所有文件名到Excel表格中,并与其它文件名对比。我发现很多人对如何批量提取和处理文件名并不熟悉,再加上最近又看到了书里提到类似的操作,因此我写下这篇文章,对批量提取文件名的思路做个总结。
获取文件名
我们首先要做的就是能够批量获取所需的文件名,我提供下面两种可行的办法。
Dir命令法
如果对CMD命令熟悉,可以直接通过Dir命令[1]操作。进入目标文件夹后,直接在文件夹地址栏内输入cmd,即可在当前文件夹下打开cmd窗口。然后在窗口中输入dir /b /a:-d >list.txt。此时就会在当前文件夹生成一个名为list.txt的文件,打开它就会发现里面列出了当前文件夹下的所有文件名。不过这个命令有几个需要注意及延伸的用法:
打开的list.txt中会出现“list.txt”,这是因为生成的list.txt就在当前文件夹下,所以会被扫描到并放入文件。如果想解决此问题,我觉得最简单的方式就是给list.txt加个路径,存到别的地方去即可。比如想存到桌面,可以将命令改为 dir /b /a:-d >C:\Users\xxx\Desktop\list.txtdir /b /a:-d >list.txt这个命令完整的意思是“列出当前文件夹下除文件夹名以外所有的文件名到list.txt中”。也就是说子文件夹的名称是不会出现在列表中的,如果想列出当前文件夹下所有文件及文件夹名称,只需要改为dir /b >list.txt那么如果我想遍历当前文件夹及子文件夹下所有文件名怎么办呢?使用 dir /b /a:-d /s >list.txt,如此就会列出当前文件夹及子文件夹下的文件名,注意不包含文件夹的名称。
以上的用法应该已经涵盖大部分场景了,更详细的说明还是去看官方文档或别的教程视频吧。当列出所需文件名时,将文件名复制到表格中即可。
复制路径法
命令行虽然可以一步到位,但是不是所有人都能记住的。因此我提供一个更容易记住的方法。
进入目标文件夹,在文件夹内选择需要的文件。方法很多:框选、Ctrl+a全选、反选、按Shift连续多选、按Ctrl单个多选都可以。在文件夹上方的选项栏中找到并点击“复制路径”的图标。
然后在表格粘贴,比如下面这种情况。这样我们就获取了包含了路径的文件名。

Excel中处理文件名
成功获取并在表格中粘贴文件名后,我们需要进一步处理。处理方法也有多种,我总结了如下几种方法。
数据分列法
文件路径长度一般是固定的,所以可以使用分列功能将文件名单独分出去。对于“复制路径法”得到的文件名大致操作方法如下:
选择要分列的整列数据 到“数据”选项卡,选择“分列”功能 在弹出的菜单中选择按固定长度,根据需要修改长度后确定即可
这样我们就得到了两列数据,第一列的“c:\xxxx\xxxx\xxxxx\”可以删除。然后可以第二次分列,第二次分列时选择“分隔符号”。在下一页中的分隔符号选择“其它”,在后面填上“.”就可以点击完成了。完成后删除“pdf”列,我们就得到了想到的纯文件名。
对于使用Dir命令得到的文件名则简单多了,直接使用一次分列,将“.”作为分隔符就能得到整列的纯文件名了
智能填充法
从Excel 2013开始就有一个很神奇的“智能填充”功能,快捷键是Ctrl+E。我们在提取的第一个路径旁边的单元格内写一个我们最终要的数据,然后选中所有需要填充的单元格(包含已写的第一个),按Ctrl+E,然后所有空白单元格就会填上所有文件名了。
参考资料
[1]
Dir命令https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/dir
夜雨聆风