【269】45周 Windows 中的文件批量处理 | 效率思维

Windows 中的文件批量处理 | 效率思维

| 本文为付费栏目文章,您已订阅,可阅读全文 |
在前段时间的 Power+ 需求定制中,有一位读者(@zhangallen)向我们提出了这样一个需求:「希望在 Windows 中实现批量筛选和打印图纸」。
这种对大量文件进行筛选和批处理的需求,在不少工作中都很常见。今天就以「批量处理」为主题,讲一讲如何对文件进行批量处理
批量处理文件的方式无外乎三种:批量筛选批量归类批量修改
三种批量处理方式相互组合,就可以实现许多功能。我们先拿批量打印图纸来举个例子。

批量打印图纸,实际上是要做什么

这位读者提出的需求是这样的:「公司的服务器内存有上万份的图纸,可以随时调用。每次需要打印图纸时,员工会根据客户需求制作一个所需图纸的 Excel 表格。但是如何才能仅凭这份表格,快速筛选出所有指定的图纸,并按照图纸的纸张大小进行批量打印呢?」
概括一下就是——

需求分析难点
筛选文件数据在 Excel 里,图纸分布在不同的文件夹中
批量打印图纸大小不统一,打印时需要一一打开查看

手工操作方案

如果纯手工操作,需要员工在 Excel 中一条一条地复制表格图纸图号,再到 Windows 的文件资源管理器中一项一项地进行搜索,搜索完毕后复制出来再一张一张打印图纸。这么做不仅劳民伤财,而且一旦需要打印的图纸变多,效率就变得非常低下。

批量处理方案

那么,能否提高一下效率呢?最理想的方案自然是「批量处理」。
最初的需求是对于人而言的,目前的机器还不能直接理解这么复杂的需求。要实现批量处理,我们首先要做的是让机器明白我们想做什么。
所以第一步是分析这件事需要用到的功能,如果超出机器的能力范围,自然是无法实现的。如果可以实现,那第二步就是把这个需求拆分成多个步骤,并具体到每一步。
让我们先看看这个需求中的细节和难点,其实这个需求可以大致分为两步:
  1. 根据 Excel 的内容,来筛选对应名称的文件。
  2. 根据图纸中显示的纸张大小,一次性打印在不同尺寸的纸张上(A3、A4)。
明确了需求,就可以试着实现它们了。

1. 根据 Excel 内容,筛选所需图纸

先来看看第一步:「根据 Excel 的内容,来筛选对应名称的文件。」
Excel 是一个功能强大的表格工具。要实现筛选,完全不需要一行一行地复制粘贴。我们利用 Excel 本身提供的丰富公式来实现批量操作。
筛选操作实际上就是查找和提取,为了实现全盘快速搜索,系统自带的搜索显然是不够看的。我们需要一个名为 Everything 的小工具。
Everything 是一个用于搜索本地文件的小工具。如果要和 Excel 配合使用,建议优先使用这类支持公式的工具,因为通常要用到一些简单的语法。
比如在 Everything 的语法里,竖线符 | 代表「或」的意思。当需要查询多个文件时,可以用竖线符 | 来实现批量搜索。

具体操作

第一步:在 Excel 里,将需要用到的列复制到一个新的工作表中。这个例子中是「图号」和「格式」两列。
第二步:用合并符号 & 连接多段文字内容,用或符号 | 来检索所有文字,用英文双引号 "" 表示普通文字,把需要的内容组合生成出一个公式。
例如 =A2&"."&B2&"|",生成形如 图号.格式| 的一列,最后生成的是:TZ2018.07.07-(233).tif|。往下拖动小十字,生成所有公式。

将「图号」与「格式」组合成公式
第三步:选中生成出来的一列非常长的公式,将它复制出来,直接粘贴到 Everything 里。这一长串公式的意思是「筛选出所有的图号」,可以检索出所有需要的图片,完成对表格内容的筛选。

将组合出来的公式粘贴到 Everything 里
第四步:如果电脑中的其他位置还存在同名文件混淆。Everything 里还有一个技巧,在搜索框里加入 "搜索路径",可以仅搜索图纸库中的图纸。就像图中所显示的"E:\临时\图纸测试\图纸库\"。这样不会与外部文件搞混。

在搜索框里加入搜索路径
第五步:全选所有筛选出的文件,复制到新的位置进行下一步的纸张大小的筛选。
这样一来,不仅解决了子文件夹的问题,可以把这些图纸一次性复制出来。大大简化了工作步骤。

2. 如何判断图纸大小,实现批量打印

判断文件的特定信息也是一项实用的技能。
如果不考虑效率,可以一张一张打开图片,查看纸张大小,然后再打印……
如果是几张图纸还好,要是重复几十上百次就会令人感到厌烦了。其实根本无需打开文件,一样可以通过其他方法判断图纸的纸张大小。

确定文件类型

在这次例子中,图纸文件采用的是 tif 格式,这是一种图片格式,压缩率低,会保存分层和透明信息。印刷品通常会采用这种格式保存。由于是图片格式,虽然没有直接告诉我们是 A3 还是 A4,但可以从它的元数据中判断出来。

查看图纸文件的属性
右键 tif 查看属性 → 详细信息,就可以看到图片的分辨率、宽高信息。这就可以成为我们判断纸张大小的依据。

对文件批量操作

在文件资源管理器中选用详细信息视图,所有文件的具体属性一览无余。但是默认情况下是找不到分辨率信息的,所以需要先启用这一项。
要开启「分辨率」这一栏,首先在顶部「每列名称」上右键,可以看到当前启用的详细信息,然后选择「其他」→ 勾选「分辨率」,这样就能看到当前文件夹中所有文件的分辨率数据了。

开启「分辨率」显示
然后右键空白处,分组依据 → 分辨率,就可以将两种大小的图纸区分开了。
在上一步中我们已经把需要的文件筛选出来了,现在只要选中同种分辨率的图纸,直接打印在不同大小的纸张上。
至此,批量打印的问题已经被简化为两个步骤:筛选所需图纸、区分纸张大小。大大缩短了重复劳动的时间,在需要反复打印时,两步就可以完成工作。

扩展思维,解决更多问题

看到这里,可能会有读者表示:「我的工作流程和他的不太一样,怎么办呢?」
当然,每个人都有自己的工作流程,但是万变不离其宗,在上面的例子中已经提到了不少解决问题的思路。下面来具体讲一讲解决文件批量处理问题的思路。
我认为,与文件有关的批量操作都可以化简为三种基本操作:筛选、归类、修改

批量筛选

筛选,就是从大量文件中提取需要的一部分文件。
最常见的筛选操作就是「单一搜索」,人们总是习惯用精准的关键字去寻找文件,因此在工作中对文件合理命名就显得尤为重要。对少量的文件一一搜索,并不比批量操作慢多少。
第二个常见的筛选操作是「批量选择」,按住 Ctrl 和 Shift 来选取多个文件也是常见的筛选操作,经常被用于选取连续的文件和少量文件。
以上两种方式都是手工完成的,效率并不高。
更高效的批量筛选则是「按需搜索」,根据需求批量生成代码,从而实现大量文件的检索。工作中最常用的 Excel 表格就内置了很多公式,可以生成搜索所需的代码。按需搜索听上去复杂,但在实际操作时有很多工具供我们使用,Everything 就是我最常用的工具,搜索速度快,泛用性强,系统占用低都是它的优点。上面的例子中就结合了两者,完成了按需搜索操作。

批量归类

归类,就是将同类型的文件放在一起,便于进一步处理。
批量归类可以用文件的自带信息归类。除了文件名、修改日期、扩展名等,在图片、视频、音频等文件中,都会包含丰富的元数据,像是图片的拍摄时间、分辨率、拍摄设备等。
例子中讲到的「把文件分为 A3、A4」根据图片的分辨率来进行的分类就属于比较常用的分类方法了。
其他常见的归类方法有「按不同文件类型分类」「按不同日期分类」……如果你愿意,还可以用「按照视频长度分类」这种方式,只是一般人不会这么做。
在归类时常见的阻碍是不确定的归类标准只能人工进行的归类。像是「我喜欢的照片」,这就属于无法批量处理的类型,感性的归类标准会让机器无从下手。再比如「按不同项目分类」,如果文件名称、类型上都没有相似之处,也很难进行批量处理。这就是之前说的「超出了机器的能力范围」,只能手动完成。

批量修改

修改,就是对文件内容进行处理。
而批量处理,就是在一个统一的标准下对文件进行修改。常见的操作是批量修改文件名,有时候也会需要批量修改图片大小、批量添加水印……这些都属于批量修改操作。
批量修改通常需要用到特定软件,在 Windows 中,文件资源管理器提供了最基础的批量改名功能。选中一批文件,右键重命名,就能按照「文件名 (1)、(2)、(3)……」的形式自动重命名。如果要对文件内容进行修改,可以用其他软件修改,这里就不再展开了。

更多批量操作的实现思路

在这些基础操作之外的其他操作,比如删除重复的文件,批量生成文件夹等,实际上是这些操作的组合。
这些特定需求的操作,手动操作固然可以完成,但既然可以批量实现,何乐而不为呢?
这些批量操作的思路大同小异:先分解动作,再实现操作。如果现有工具无法满足需求,寻找更专业的工具。

实现删除重复的 Word 文件

比如我想实现「删除重复的 Word 文件」这个操作。我先思考如何将它变成可执行的步骤,拆分一下就变成了:筛选同名文件 → 删除,也就是筛选和修改。
首先要「筛选同名文件」,此时,我并不确定 Everything 里有没有筛选同名文件这个功能。我在 Everything 的帮助 → 搜索语法中找了一下,发现 dupe: 这个指令是用来搜索重复的文件名的(当然你也可以去 Google 一下 Everything 筛选重复文件)。
然后输入 "D:\文档" dupe: *.doc 就可以找到这个目录中所有重复的 Word 文档了。

搜索重复文件名的 Word 文档
接下来要实现「批量删除」,此时默认排序是按照文件名称排序,两个同名的文件都是相邻的,难道要按住 Ctrl 一个隔一个地选中删除吗?显然不必这样做,因为同一个目录中不可能存在同名文件,只要点一下「按路径排序」,就可以很轻松地选中一批文件,一次性删除了。

批量生成文件夹

有时候我们需要「批量生成文件夹」,用于实现比较详细的分类。这个操作的步骤是:生成文件夹名称 → 批量建立文件夹。
如果手动创建多层嵌套的文件夹,显然太麻烦了一些。在 Excel 里做好分类标准,再统一生成目录是个不错的选择。接着利用 Windows 中新建文件夹的批处理命令 mkdir 就可以做到了。
首先在 Excel 里生成一串文件名,用公式和符号 & ,将文件名和 mkdir 连接在一起。比如这样一条公式 ="mkdir "&A3&"\"&B3 可以生成形如「mkdir 文档库\个人文档」这种形式的代码。将所有代码复制到 bat 文件里,就可以批量创建文件夹和子文件夹了。

批量生成文件夹

实现增量备份文件

再比如,我想实现「增量备份文件」这个操作。我仍然先思考它的步骤:筛选两个文件夹中有差异的新增文件 → 复制到目标位置,依然是筛选和修改。
在 Windows 的文件资源管理器中内置了一个简易版解决方法,那就是直接全选 → 复制 → 粘贴。如果出现了同名文件,Windows 就会提示是否跳过这些文件,选择跳过就可以完成增量备份了。但是带来了另一个问题,同名文件不会被更新,这么备份的意义不大,很不建议这么做。

Windows 会提示是否跳过重复文件
而我经过查询,Everything 本身也不具备处理复杂备份操作的能力。所以在实际使用中,遇到这类超出能力范围的工作,推荐采用更专用的备份工具,比如 FreeFileSync。此外,像是批量添加水印、批量压缩图片这些操作,需要其他软件辅助才能完成。

实际工作中的效率思维

相比上面这些举的简单例子,实际可能碰到的问题千奇百怪。我曾接到过一个任务,需要将 2000 余张以身份证号命名的证件照,文件的后面加上名字。出于保密需要不能发送给其他人,要求让几位组长来一一辨认人脸,并手动加上名字。这项工作如果真的这么做,可能需要耗费一周甚至更多的时间。
但是我经过一番研究,要来了所有人员的姓名身份证对照表后,用 Excel 和 Renamer 就完成了工作,从接手任务到完成任务只花了 30 分钟。
每当有任务量大、重复度高的任务摆在我的面前,我第一时间想到的不是靠人力蛮干,而是捋清步骤,找出规律,尽可能以批量化处理的方式完成任务。
在工作中保持批量处理的思路,对效率的提升是显而易见的。

上一期
如何用语音控制电脑
下一期
Week Calendar 限免、专业画图工具 Affinity Designer 上架 | App 奏折 045
 
精选评论(0) 我的评论