<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>自动化 on Victor42</title><link>https://victor42.eth.limo/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/</link><description>Recent content in 自动化 on Victor42</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>hi@victor42.work (Victor42)</managingEditor><webMaster>hi@victor42.work (Victor42)</webMaster><lastBuildDate>Thu, 13 Jun 2024 14:05:00 +0000</lastBuildDate><atom:link href="https://victor42.eth.limo/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>我用Excel把PS变成了一挺重机枪</title><link>https://victor42.eth.limo/post/3650/</link><pubDate>Thu, 13 Jun 2024 14:05:00 +0000</pubDate><author>hi@victor42.work (Victor42)</author><guid>https://victor42.eth.limo/post/3650/</guid><description>&lt;img src="https://cdn.victor42.work/posts/2024-06/927f0f7ac6f154b4027673e30b629be2.jpg" alt="Featured image of post 我用Excel把PS变成了一挺重机枪" /&gt;&lt;p&gt;听说隔壁市场部正在头疼，新版课程封面图设计被老板认可了，接下来要把平台上现有封面图全部更新掉。总共800多张图，不是那种简单替换文字就可以的，有很多细微的变化。市场部就一个设计师，忙着呢，自己做不现实。外包出去一张20就是16000，预算不够。&lt;/p&gt;
&lt;p&gt;诶！一听到这值16000，我就来劲了。我最擅长自动化，数据狂魔加上PS技巧，这事儿整个部门也就只有我能干了。你们不是喜欢说设计价值吗？你的价值是什么？怎么量化你的设计产出？花半天时间，给公司省下一个设计师一整个月工资，够不够价值？就冲这绝佳的年底汇报材料，果断把活抢下来。&lt;/p&gt;
&lt;h2 id="需求"&gt;需求
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/d257445c788894aad2f9c9d25333d834.jpg"
loading="lazy"
alt="粉橘色调课程封面模板，顶部橙色圆角标签写商品运营，中央大字怎么做出来潜力爆款的新品，下方小字新品研发的，背景为网格纹理与几何装饰"
&gt;&lt;/p&gt;
&lt;p&gt;市场部设计师做出来的模板长这样。就别对设计指点江山了，反正这效果是老板点名要的，简单直接没毛病。具体需求说起来也简单，把图上三处文字替换成真实内容，输出800多张图。&lt;/p&gt;
&lt;p&gt;看到模板，很多设计师会觉得这很简单啊，PS变量定义，建个Excel批量输出就完事儿了。&lt;/p&gt;
&lt;p&gt;还不会Excel+PS批量输出的设计师，有兴趣请看这篇：&lt;a class="link" href="https://zhuanlan.zhihu.com/p/33725280" target="_blank" rel="noopener"
&gt;https://zhuanlan.zhihu.com/p/33725280&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;嗯……思路是这样没错，如果真这么简单，照着教程做就可以了，全文完。&lt;/p&gt;
&lt;p&gt;但是，所有模板拿到手后，发现事情远没那么简单，各种变数超乎想象：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/927f0f7ac6f154b4027673e30b629be2.jpg"
loading="lazy"
alt="十张不同配色与主题的课程封面网格展示，包含商品运营/运动学院/淘宝新商/天猫新商/文教学院/家享学院/快消学院/企服学院/数码学院/服饰学院等分类，每张封面顶部有对应颜色的分类标签"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/2f196e8210e1f43dae80cd978031cf36.jpg"
loading="lazy"
alt="三种课程分类标签设计对比，从上到下依次为橙色商品运营标签/橙色淘宝新商标签/粉红色天猫新商标签，均为圆角矩形背景"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/0a0c12d573ee7d0f2958cd0baee914fc.jpg"
loading="lazy"
alt="课程封面标题排版对比，上方淘宝新商封面展示双行标题名称一行最多8字和第二行内容1，下方天猫新商封面展示单行标题名称一行最多8个字1，底部各有描述文字占位"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/f60e4590c7b4551a14e93c37b5396f8d.jpg"
loading="lazy"
alt="两款底栏文字设计切片对比，上方蓝色背景配电脑显示器图标显示最多5个字，下方粉色背景配文件夹图标显示最多5个字，展示不同分类的装饰框样式"
&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;课程分了十几类，有些分类有独特的背景图，有些分类共用一张背景图。&lt;/li&gt;
&lt;li&gt;顶部的课程分类不全是文字，有两个特殊分类（淘宝和天猫）用的是两者的Logo字形，这只能用图片来实现。&lt;/li&gt;
&lt;li&gt;课程名称有的一行、有的两行，一行的时候要垂直居中。&lt;/li&gt;
&lt;li&gt;图里文字颜色随背景图变化，并不是纯黑，而是略微偏向于背景色。&lt;/li&gt;
&lt;li&gt;最下面的描述小字不一定都有，有的空缺，连带着小字底下的装饰框也得拿掉。&lt;/li&gt;
&lt;li&gt;装饰框的线条颜色也随背景色变，和文字同色系，但鲜艳很多。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在先停下来想想，用PS变量定义还能应付吗？十几个分类出十几个PSD，当然也能实现。但是我不想导出十几次，只用一个PSD，这事儿能搞吗？&lt;/p&gt;
&lt;p&gt;能。&lt;/p&gt;
&lt;p&gt;这就需要设计师同时也是Excel高手了。&lt;/p&gt;
&lt;h2 id="excel数据模型设计"&gt;Excel数据模型设计
&lt;/h2&gt;&lt;p&gt;既然这事这么复杂，先思考一下数据模型吧。&lt;/p&gt;
&lt;p&gt;程序员看到这怕是要笑出声来，你一个小破图这么点信息，还数据模型？&lt;/p&gt;
&lt;p&gt;轻喷啊大侠，我这不是借用一下思路嘛。但是话说回来，如果只想把事干成，条条大路通罗马；如果想达到最高的效率，那真的要用数据模型的思路来规划。怎样算最高的效率？运营填最少的信息，我每次导出做最少的操作。这个出图流程会长期运转，要保持边际成本最低。至于第一次的配置操作，复杂点问题不大，初始成本不那么重要。&lt;/p&gt;
&lt;p&gt;那么我们的表里有哪些列呢？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;课程分类&lt;/li&gt;
&lt;li&gt;课程名称&lt;/li&gt;
&lt;li&gt;描述&lt;/li&gt;
&lt;li&gt;背景图&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这几个是最显而易见的。加上需求里那一堆变数，实际需要的列有这么多：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/3edc562bdfee2fb96d5271d682185f6b.jpg"
loading="lazy"
alt="Excel事实表截图，包含文件名/分类/标题第1行/标题第2行/描述/淘宝/天猫/单行/两行/有描述/背景图/前景色共12列，展示规则解读/货品运营/内容直播等分类的封面数据"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件名：用来控制最终输出的文件名，按照合理、便于查找的顺序排列&lt;/li&gt;
&lt;li&gt;分类：那十几个分类，既以文字形式显示在顶部，也决定着模板的整体外观&lt;/li&gt;
&lt;li&gt;标题第1行：标题有的一行有的两行，拆开处理，满足了运营手动控制断行位置的需求&lt;/li&gt;
&lt;li&gt;标题第2行：第2行是可选的，不填就当作单行标题&lt;/li&gt;
&lt;li&gt;描述：时有时无的关键词，既以文字形式出现，也决定了它底下的装饰框是否显示&lt;/li&gt;
&lt;li&gt;淘宝：是或否的布尔值，作为”淘宝“分类的Logo图显示开关，由分类列决定&lt;/li&gt;
&lt;li&gt;天猫：是或否的布尔值，作为”天猫“分类的Logo图显示开关，由分类列决定&lt;/li&gt;
&lt;li&gt;单行：是或否的布尔值，控制单行标题图层是否显示，由标题第2行是否为空决定&lt;/li&gt;
&lt;li&gt;两行：是或否的布尔值，控制第1行和第2行标题图层是否显示，由标题第2行是否为空决定&lt;/li&gt;
&lt;li&gt;有描述：是或否的布尔值，控制描述装饰框是否显示，由描述是否为空决定&lt;/li&gt;
&lt;li&gt;背景图：模板背景图对应的文件路径&lt;/li&gt;
&lt;li&gt;前景色：前景色图片对应的文件路径，这是一张纯色图，用来给标题文字上不同的色&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/f0990a616f2f602bcdd42a44bb01df9e.jpg"
loading="lazy"
alt="Photoshop图层面板截图，从上到下依次为前景色图层/文字组文件夹含描述/标题第2行/标题第1行/标题单行四个文本图层/色相饱和度调整图层/前景色图层"
&gt;&lt;/p&gt;
&lt;p&gt;这里要解释一下，我标题实际上有3个图层，单行标题是一个图层，第1行标题和第2行标题是另外2个图层，用于两行标题的情况。&lt;/p&gt;
&lt;p&gt;这样一堆信息丢给运营填的话，估计会挨打。其中大多数都可以计算得出，真正需要运营填写的只有分类、标题第1行、标题第2行、描述。把仅有这4列的表做成在线表格，散出去给运营填。没错，我们有5、6个运营在做这事，每人领了几个分类，这样吭哧吭哧填起来也快得很。&lt;/p&gt;
&lt;p&gt;现在复杂的部分留给我自己了，怎样把其余的列算出来，这些都是要给PS用的，一列也不能少。略微一想就会发现，分类是关键。分类决定了淘宝、天猫Logo是否展示，决定了背景图用哪张，决定了文字是什么颜色，还决定了输出文件名的排序。所以应该为分类单独开一个表，作为维度表，一个分类就好比一种商品。记录图片内容的表，就是事实表，这就像商品的一条订单记录。分类名是分类表的主键，作为外键在事实表里出现，把分类的各种信息带过去。一张事实表（导出csv）、一张维度表，这应该是最简陋的星形结构了，或许可以叫”地月结构“？&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/6d4da5705eb81be2c0eee26a2cf600a7.jpg"
loading="lazy"
alt="Excel维度表截图，包含分类/id/文件名/背景图/前景色5列，列出规则解读/用户运营/货品运营等18个分类对应的模板背景图和前景色文件路径"
&gt;&lt;/p&gt;
&lt;p&gt;上面这段许多概念属于数据模型与数据库领域。简单说就是把许多属性定义在分类上。只要属于某个分类，就自动根据分类名读出对应的背景图、前景色等属性。实际需求也正是如此。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/a536f153f4837dc8de1937558ca0482d.jpg"
loading="lazy"
alt="Excel合并表截图，包含顺序/板块名称/标题第1行/标题第2行/关键词5列，展示规则解读/货品运营/内容直播/淘宝新商/天猫新商/服饰学院等分类的运营填写数据"
&gt;&lt;/p&gt;
&lt;p&gt;现在，运营填好的全部数据（4列）已经在我的Excel文件里了，把它引用到隔壁的事实表里，根据PS的需要加上各个运算列，构成完整的数据表。每次使用时更新数据，保存成csv格式，交给PS处理。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/3edc562bdfee2fb96d5271d682185f6b.jpg"
loading="lazy"
alt="Excel事实表完整配置截图，包含文件名/分类/标题第1行/标题第2行/描述/淘宝/天猫/单行/两行/有描述/背景图/前景色共12列，展示通过公式自动计算的封面元数据"
&gt;&lt;/p&gt;
&lt;p&gt;这些运算列就考验Excel公式的运用了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;由于要去分类表里查它的各种属性，用好vlookup是关键。&lt;/li&gt;
&lt;li&gt;文件名则需要文本拼接，想拼成什么样都可以，随心所欲决定输出图片文件的排序。&lt;/li&gt;
&lt;li&gt;我在两个标题列里贴心地用字符串替换公式做了去空格功能，即使运营不小心多敲了个空格，也不会导致标题位置跑偏，精准居中。&lt;/li&gt;
&lt;li&gt;到处都用了IF来判断空值，防止在空行上产生0。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些对熟悉Excel的人并不难，就不展开了。&lt;/p&gt;
&lt;h2 id="power-query合并表格"&gt;Power Query合并表格
&lt;/h2&gt;&lt;p&gt;但是，上面似乎遗漏了2个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运营填好的数据是如何进到我Excel里来的？&lt;/li&gt;
&lt;li&gt;运营再给一批新数据，怎么更新进来？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/800867584af30783c478924a6db86fdd.jpg"
loading="lazy"
alt="Excel在线收集表截图，包含板块名称/标题第1行/标题第2行/关键词4列，底部标签栏显示通识/新商/服饰/快消/数码/家享/运动/文教/企服等多个工作表"
&gt;&lt;/p&gt;
&lt;p&gt;先来解决第1个。之前散出去给运营填的是在线表格，每人领其中几页，互不影响，且能实时更新。而我的数据表是一个本地Excel文件，因为要用到Excel强大的Power Query功能来合并表格，大多数在线表格产品没有这种能力。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/521925ce776cc959e7698c66e0969042.jpg"
loading="lazy"
alt="macOS Finder文件夹截图，显示封面图模板.psb/封面图内容.xlsx/封面图内容收集.xlsx/工作簿7.csv/模板-背景图文件夹/模板-前景色文件夹/JPG文件夹/PSD文件夹共8个项目"
&gt;&lt;/p&gt;
&lt;p&gt;每当要输出一批图，首先要把在线表格以Excel文件的形式下载下来（封面图内容收集.xlsx），放到和我数据表（封面图内容.xlsx）同一个目录下。只要文件位置不动，这层数据读取的关联关系就能一直保持下去。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/2878de8a5b1e67e4846803c6e585a9b3.jpg"
loading="lazy"
alt="Excel数据菜单截图，红框标注获取数据Power Query按钮，旁边有全部刷新/查询与连接/属性/工作簿链接等选项"
&gt;&lt;/p&gt;
&lt;p&gt;在数据表中使用“数据”菜单里的Power Query。这个功能可以理解为一种图形化界面的SQL，它可以从本地表格、网页、本地数据库、Azure云上读取数据，并进一步清洗、转换、聚合。我这里用到的是它从本地表格读取数据的能力。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/be21ed673a8ff88073305b48f847fefd.jpg"
loading="lazy"
alt="Power Query编辑器截图，左侧查询列表显示通识/新商/服饰/快消/数码/家享/运动/文教/企服/合并共10个查询，中间表格展示板块名称/标题第1行/标题第2行/关键词数据，右侧查询设置显示源/导航1/已更改列类型/已提升标题步骤"
&gt;&lt;/p&gt;
&lt;p&gt;Power Query的界面对于只用Excel基础功能的人应该既熟悉又陌生。熟悉的是，“哇这里也有表格耶”；陌生的是，“其他这些都是什么玩意”。&lt;/p&gt;
&lt;p&gt;怎么理解Power Query呢？它做了3件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先指定了数据源，外部数据从哪来&lt;/li&gt;
&lt;li&gt;然后让我设定查询的规则和条件&lt;/li&gt;
&lt;li&gt;最后执行这些查询请求，把我要的数据加载到当前Excel文件中，一个请求加载一页&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/af1dc0620c1d62b971ac405eddbb55cc.jpg"
loading="lazy"
alt="Power Query编辑器左侧查询列表截图，显示查询[10]标题，下方依次为通识/新商/服饰/快消/数码/家享/运动/文教/企服/合并共10个查询项"
&gt;&lt;/p&gt;
&lt;p&gt;其中最核心是第2步。界面左侧列表就是一个个的查询请求，它会按顺序执行下来。&lt;/p&gt;
&lt;p&gt;每个请求里要“将第一行用作标题”，并且在筛选条件里去掉空值。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/69054b9e157cd497d0ede7fa9d85a547.jpg"
loading="lazy"
alt="Power Query编辑器工具栏截图，红框标注追加查询按钮，位于合并查询下拉菜单下方，旁边有关闭并上传/获取数据/输入数据等按钮"
&gt;&lt;/p&gt;
&lt;p&gt;查询操作不止是基本的筛选排序，我这里用到了它的合并表格的能力。从运营那收过来的数据分散在很多页表里，总不能一个个手动复制黏贴吧？我把运营的每页表都查询出来，最后再建一个追加查询请求，它可以把格式完全相同的表合成一张，相当于SQL的CROSS JOIN。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/137c056d4946b2367dc3259518c0e5dd.jpg"
loading="lazy"
alt="Power Query追加查询配置窗口，标题为追加，选择三个或更多表选项，左侧可用表列表显示通识/新商/服饰/快消/数码/家享/运动/文教/企服，右侧要追加的表已选中新商/服饰/快消/数码/家享/运动/文教/企服"
&gt;&lt;/p&gt;
&lt;p&gt;顺道提一下，它的合并查询也非常有用，能实现SQL里JOIN和LEFT JOIN的效果。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/66b4091f7dfc0ebf0448baf72b6509c0.jpg"
loading="lazy"
alt="Power Query编辑器工具栏截图，红框标注关闭并上传按钮，位于左上角关闭区域，旁边有获取数据/输入数据/选项等按钮"
&gt;&lt;/p&gt;
&lt;p&gt;点了关闭（其实作用是保存）按钮后，我的Excel文件里就刷刷刷多出许多页，不需要的可以删掉，留下有用的。我再合并好的表左侧加了一列序号，用来给文件名排序。&lt;/p&gt;
&lt;p&gt;这样，运营填的数据就全部进到我的Excel文件里来了。&lt;/p&gt;
&lt;p&gt;现在来解决第2个问题，怎么更新数据？&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/e56e2966a217111a4a10f15db546dd42.jpg"
loading="lazy"
alt="Excel数据菜单截图，红框标注全部刷新按钮，位于查询与连接区域，旁边有获取数据Power Query/属性/工作簿链接等选项"
&gt;&lt;/p&gt;
&lt;p&gt;如果运营提交了一批新的封面图内容过来，我只要下载下来放到老地方覆盖一下。再打开数据表，进入“数据”菜单，点刷新。就这么简单，数据就更新了。&lt;/p&gt;
&lt;p&gt;为什么把Power Query比作SQL呢，因为它记录和复用的是我的查询条件，而不是查出来的结果。查询结果虽然也显示出来了，但那只是预览，让我方便修改查询条件。实际上它是把我的查询请求记录在Excel文件中，每次点刷新，就重新查询一遍。&lt;/p&gt;
&lt;p&gt;现在，经过了一系列看似复杂的首次配置，数据处理的管道已经建立起来了。后续使用变得异常简单：下载、覆盖、刷新、保存为csv，就变成PS需要的数据文件了。&lt;/p&gt;
&lt;h2 id="ps批量出图"&gt;PS批量出图
&lt;/h2&gt;&lt;p&gt;到了PS这一步，要做5件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;整理和重命名图层&lt;/li&gt;
&lt;li&gt;为图层定义变量&lt;/li&gt;
&lt;li&gt;导入数据组&lt;/li&gt;
&lt;li&gt;批量导出psd&lt;/li&gt;
&lt;li&gt;批量psd转jpg&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="1-整理和重命名图层"&gt;1. 整理和重命名图层
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/531b776b93a3a94233d9c2842edd7612.jpg"
loading="lazy"
alt="Photoshop图层面板完整截图，从上到下依次为前景色/文字组文件夹含描述/标题第2行/标题第1行/标题单行/色相饱和度1/前景色/描述背景-有色/描述背景-白/天猫新商/淘宝新商/分类/背景图/文件名共14个图层"
&gt;&lt;/p&gt;
&lt;p&gt;第1步没什么技术含量，图层该合并的合并，顺序该调整的调整。为了后面定义变量方便，建议把图层按照数据表表头来命名。&lt;/p&gt;
&lt;p&gt;文件名这个图层很特殊，它不体现在图上。拿到的psd模板里没有，需要手动新建，样式随意，反正不显示。把它藏在背景图图层的底下，或者移到画布外面。&lt;/p&gt;
&lt;p&gt;前景色这个图层也需要特殊处理。变量定义无法直接改变文字颜色，怎么实现随背景变化？把需要上色的文字编组，新建一个纯色图层，使用剪贴蒙板作用在这个组上，这就实现了统一控制文本颜色。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/a9a688b8e6f7b88860fa0b00a4b79c1b.jpg"
loading="lazy"
alt="Photoshop色相/饱和度调节面板截图，预设显示自定，应用范围为全图，色相滑块为0，饱和度滑块为&amp;#43;100，明度滑块为&amp;#43;50，底部显示调整前后的颜色对比条"
&gt;&lt;/p&gt;
&lt;p&gt;装饰框的线条颜色也会变，还记得吗？此处的颜色和文字颜色有关联，但又不一样。它们之间的关联是什么？在前景色的基础上，为这两根线条专门加一个色相/饱和度调整图层，把它的饱和度和明度调高就行。比如棕色加浓提亮就变橙色，墨绿加浓提亮就变草绿……这个技巧需要对色彩原理和PS调色有比较深刻的理解。&lt;/p&gt;
&lt;h3 id="2-为图层定义变量"&gt;2. 为图层定义变量
&lt;/h3&gt;&lt;p&gt;第2步变量定义的基础技巧，这里就不手把手教学了，开篇引用的教程里都有讲。这里主要讲几个难点的处理。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/ea2af0bf27f4c74c49db871f5c2b7296.jpg"
loading="lazy"
alt="Photoshop变量定义窗口截图，图层选择背景图，变量类型勾选像素替换，名称设为背景图，方法选择一致，底部说明文字为指定图层的变量以控制其可见性，替换文本字符串或替换像素"
&gt;&lt;/p&gt;
&lt;p&gt;变量定义功能最常用的是替换文字，用到的是其中的文本替换这个选项。当变量图层不是文本时，它就会变为像素替换，也就是换图。背景图通过这种方式替换。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/5be7d1ed67cc798dc3a2925f3e07cc84.jpg"
loading="lazy"
alt="10张纯色前景色图片缩略图网格，分为两行排列，第一行1-通识/2-淘宝/2-天猫/3-服饰/3-家享/3-快消为深棕/深褐/深紫/深红等暖色调，第二行3-企服/3-数码/3-文教/3-运动为深蓝/深绿等冷色调"
&gt;&lt;/p&gt;
&lt;p&gt;前景色也一样，为每种文字颜色准备相应的纯色图片，把上一步创建的剪贴模板图层定义为变量，根据课程分类选用相应颜色。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/46b0372dc8bd46ffed011eae85e6bb28.jpg"
loading="lazy"
alt="Excel表格截图，显示淘宝/天猫/单行/两行/有描述5列布尔值，所有行淘宝和天猫均为FALSE，单行为FALSE，两行为TRUE，有描述在TRUE和FALSE之间交替"
&gt;&lt;/p&gt;
&lt;p&gt;可见性变量常被忽视，但非常有用。表格里这些TRUE和FALSE的列，就是通过可见性来控制图层的显示隐藏。可见性变量还可以和文本替换或像素替换同时使用。比如底部描述小字，文本替换改变它的内容，可见性则控制它显示隐藏。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/a740f3312e02a860493537f9e78b80c0.jpg"
loading="lazy"
alt="Photoshop变量定义窗口截图，图层选择描述，变量类型同时勾选可见性名称为有描述并链接描述背景-有色和描述背景-白两个图层，以及文本替换名称为描述"
&gt;&lt;/p&gt;
&lt;p&gt;前两步的工作虽然繁琐，但都是一次性的，在后续的使用中不必重复。&lt;/p&gt;
&lt;h3 id="3-导入数据组"&gt;3. 导入数据组
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/e1fbcc63e3a13d31e181c8a1f12db265.jpg"
loading="lazy"
alt="Photoshop变量窗口数据组面板截图，数据组显示1-规则解读-1-名称一行最多8字爆款的新品1，变量列表显示两行/分类/前景色/单行/天猫/描述/文件名及其对应值和图层，右侧红框标注导入按钮"
&gt;&lt;/p&gt;
&lt;p&gt;切换到导入面板，把准备好的csv文件导进来就是了。&lt;/p&gt;
&lt;p&gt;导入常见的错误有两种，一种是有多余的列或名称对不上的列，需要检查。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/6c7cabdd58fab84c63dfefdfeb4ad16a.jpg"
loading="lazy"
alt="Excel表格截图，显示标题第2行和描述两列数据，描述列中部分单元格填充NULL值用于标记空单元格，如爆款的新品3/第二行内容3/第二行内容2等行"
&gt;&lt;/p&gt;
&lt;p&gt;另一种是有的行里有空单元格。是的，PS导入数据组不支持空单元格，所以我在制作数据表的时候把空单元格内容都改成了NULL。这些NULL显示出来会破坏图片效果，所以可能为空的列都要做可见性判断，适时隐藏。&lt;/p&gt;
&lt;h3 id="4-批量导出psd"&gt;4. 批量导出psd
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/d92857c1843b212c5205b9d0582f88b2.jpg"
loading="lazy"
alt="Photoshop文件菜单截图，展开导出子菜单，高亮显示数据组作为文件选项，上方有快速导出为JPG/导出为/导出首选项等选项"
&gt;&lt;/p&gt;
&lt;p&gt;导出没什么技巧，这么操作就是了。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/7dceeaca255670e1437a37b68e773e31.jpg"
loading="lazy"
alt="Photoshop将数据组作为文件导出窗口截图，存储选项选择文件夹路径，数据组选择所有数据组，文件命名仅使用数据组名称加无后缀，名称示例显示1-规则解读-1-名称一行最多8字爆款的新品1.psd"
&gt;&lt;/p&gt;
&lt;p&gt;在这一步你可以自己定义导出的文件名格式。这么多可选的项里，真正有用的只有数据组名称，只有这一项能在文件名上留下对运营有帮助的信息。数据组名称读取的是csv文件第一列的内容，这就是我为什么把文件名这一列放在最前面，以实现对输出图片文件名的自由定制。&lt;/p&gt;
&lt;h3 id="5-批量psd转jpg"&gt;5. 批量psd转jpg
&lt;/h3&gt;&lt;p&gt;PS数据组导出的都是psd文件，交付出去的得是jpg文件，还要再转换一道。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/c36d844e7381a77f1c02718a560fe9f8.jpg"
loading="lazy"
alt="Photoshop动作面板截图，显示[A] save jpg动作集，包含打开/存储/关闭三个步骤，每个步骤前有勾选框和播放按钮"
&gt;&lt;/p&gt;
&lt;p&gt;录一个简单的PS动作，打开psd，存储为jpg，关闭。就这么3步，把整个psd文件夹用批处理跑一遍就行了。&lt;/p&gt;
&lt;p&gt;我自制的动作集里有现成的存为jpg动作，可在文末提供的链接里下载。&lt;/p&gt;
&lt;h2 id="还差一张表"&gt;还差一张表
&lt;/h2&gt;&lt;p&gt;好了，活干完了吗？只能说任务完成了，事情还没完，还差一张最重要的表。&lt;/p&gt;
&lt;p&gt;这价值16000的800多张封面图，只是第1批。公司还会不停出新课程的，还会有第2批、第3批……我难道不该了解一下，自己的举手之劳一年下来给公司省了多少钱吗？即使我不想知道，也非常有必要让老板知道。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2024-06/fa9ce9f2b382b99c6cad7125d176799b.jpg"
loading="lazy"
alt="数据统计表截图，包含日期/封面图数量/价值3列，第1行2024-06-01显示800张封面图价值16000元，第2-7行2024-07-01至2024-12-01价值均为0元，用于记录每月产出价值"
&gt;&lt;/p&gt;
&lt;p&gt;所以还要有这样一张数据统计表，邀功表。当然，不要起这么露骨的名字，取个谐音，叫摇滚表好了。&lt;/p&gt;
&lt;p&gt;我要是再卷一点的话，还可以基于这张表生成个柱状图，每月、每个Q、每季度的输出价值。用我的月工资减去这些产值，直观展现出每个月我的实际用人成本，雇了就是赚到。要不要这么卷到时候再看吧，反正数据是沉淀了。&lt;/p&gt;
&lt;h2 id="后记"&gt;后记
&lt;/h2&gt;&lt;p&gt;这个活抢过来性价比极高。总共就费我半天时间，做了点工作流的初次配置，后续花费的时间可以忽略不计，午餐时间挂机跑一跑就好了。&lt;/p&gt;
&lt;p&gt;这就是我的本事，我不爱造轮子，但我极其擅长组装轮子。&lt;/p&gt;
&lt;p&gt;流程跑通后，和运营开了个会。市场部向他们讲解了提供内容的规范要求，也就那4列在线表格，没谁觉得难。运营们都以为我这是AI输出的。对于非技术人员，好像不可思议的事情都是AI干的，AI是silver bullet。有意思，这种偏见我已经习以为常了。&lt;/p&gt;
&lt;p&gt;最后放上相关的文件和资源，有兴趣可以自己下载动手试试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://zhuanlan.zhihu.com/p/33725280" target="_blank" rel="noopener"
&gt;PS+Excel批量输出基础教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://my.feishu.cn/file/PGx8bMjyrohPp2x4DZ9ct0A9nIf?from=from_copylink" target="_blank" rel="noopener"
&gt;工作流文件包&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://my.feishu.cn/docx/SK0UdUPphoFBZpxJpEJcbZIsnRf?from=from_copylink" target="_blank" rel="noopener"
&gt;PS动作合集（点目录跳转）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;重要更新&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这一套工作流程，我后来又开发了自动化程度更高的程序方案，只需要有一套Python运行环境。&lt;/p&gt;
&lt;p&gt;详见：&lt;a class="link" href="https://github.com/greenzorro/excel-ps-batch-export" target="_blank" rel="noopener"
&gt;https://github.com/greenzorro/excel-ps-batch-export&lt;/a&gt;&lt;/p&gt;</description></item><item><title>港口思维：从自动化任务到一种生活方式</title><link>https://victor42.eth.limo/post/3627/</link><pubDate>Thu, 12 Jan 2023 23:52:00 +0000</pubDate><author>hi@victor42.work (Victor42)</author><guid>https://victor42.eth.limo/post/3627/</guid><description>&lt;img src="https://cdn.victor42.work/posts/2023-01/chuttersnap-xewrfLD8emE-unsplash.jpg" alt="Featured image of post 港口思维：从自动化任务到一种生活方式" /&gt;&lt;p&gt;这是一篇主题很抽象、话题很散乱的文章，讨论的是一个比较形而上的问题。既涉及一些信息自动化技巧，也思考一下生活哲学，方法的方法。如果有这个闲工夫，欢迎读下去。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;日常生活与工作有大量繁杂琐碎的小事，这些事情无论是在逻辑上还是时间上都没有规律。&lt;/p&gt;
&lt;p&gt;一个典型的情况是：你正在电脑上研究某个问题，页面开了一大堆，有关的无关的都堆在一起，还下载了几个PDF。这时同事给你发了个文件，围绕文件内容跟你一番讨论。讨论过后，你要给他一些看法，你截了好几张图加以说明。完事也差不多该下班了，你合上电脑，起身回家。刚才几件事情产生的资料就留在了电脑上，等待你将来某天去清理。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/25483758823_4ef46dc7e1_o.jpg"
loading="lazy"
alt="摆满各种杂乱图标的电脑桌面截图，蓝色星空背景上密密麻麻排列着数百个文件和文件夹图标，包括PDF/游戏/文档/快捷方式等"
&gt;&lt;/p&gt;
&lt;p&gt;我认识的多数人属于随性派，就直接由它去了，后果就是满是文件的电脑桌面。当那个“将来某天”真正到来时，已经不记得这些资料是什么、有没有用、能不能清理掉。不清理吧，每天都大海捞针；清理吧，要逐一回忆这些资料的来历，没用的删掉，有用的还得存好，相当费时。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Snipaste_2023-01-12_14-21-44.jpg"
loading="lazy"
alt="待办完成界面截图，白色背景上显示橙黄色热气球插画，下方文字今天的任务已全部完成！尽情享受空的收件箱。"
&gt;&lt;/p&gt;
&lt;p&gt;也有另一类秩序派，就是那种时刻要保持邮箱收件箱空着的人，他们信仰今日事今日毕，效率奇高。再琐碎的事情，也会用某种方式记住，例如待办清单或便利贴，一有时间就全部处理掉。花当下的时间，以节省未来更多时间。清掉当天任务的那一刻，他们会感到由衷的喜悦。&lt;/p&gt;
&lt;p&gt;我可能有点偏向秩序派，不过没到那个程度。我尝试过用后者的方法管理生活琐事，事情是井井有条了，却会把人搞得很累。在做完所有事之前，都处在一种微微焦虑的状态，这似乎对心理健康不利。&lt;/p&gt;
&lt;p&gt;比起极致的井井有条，我认为轻松与愉快的心情才是更值得追求的目标，在这一前提下再来尽可能建立秩序。直到某一天，我在自我反思时意识到，自己不知不觉间已经建立了另一套运转机制，在用一种类似于海运港口的思路管理生活的方方面面，而这正是本文要分享的。&lt;/p&gt;
&lt;h2 id="港口思维的原理"&gt;港口思维的原理
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/chuttersnap-xewrfLD8emE-unsplash.jpg"
loading="lazy"
alt="夜幕下繁忙海运港口俯拍照片，密密麻麻堆叠着数千个集装箱，多台黄色桥式起重机正在作业，灯光照亮整个港区"
&gt;&lt;/p&gt;
&lt;p&gt;这里先解释几个海运术语：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;免箱期和免堆期&lt;/strong&gt;：在海运行业，船舶公司和港口公司是相互独立的。当你的货物跨越大洋送到某个港口后，船舶公司通常会允许你继续免费占用集装箱几天，这是免箱期。而你的货物堆放在港口的某个地方，港口公司也会允许你免费堆放几天，让你有时间找车来把货物拉走，这是免堆期。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;滞箱费和滞港费&lt;/strong&gt;：与前两个名词相对。当你的货物占用集装箱太久，船舶公司就会向你收滞箱费。当你的货物在港口堆放太久，港口公司也会向你收滞港费。这样的约束机制可以避免你把宝贵的运输资源当成仓库，无限期占用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;港口思维，有两大核心原则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;世间万物是动态的&lt;/strong&gt;。每件事从开始到结束，会经历一个中间状态。在观念上，接受这个中间状态的存在。在行动上，主动在生活各方面打造一个个装卸货的缓冲区，临时存放电子文件、网络内容、实体物品、甚至知识观念，用来容纳这个中间状态。而不是在心理上否认或忽视中间状态的存在，以至于缺乏对中间状态的管理，事情来了，如不立即处理得到结果，则转瞬即忘，或堆积如山。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;并非所有事都要有始有终&lt;/strong&gt;。重要的事，在港口就地处理，处理完要转移走，让它去该去的地方。不重要的事，在港口待一会儿就会暴露它的无足轻重，让它就地销毁。时间会魔法，港口就是施展魔法的地方，给一点时间，它能还你清静。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;毕竟，事缓则圆。&lt;/p&gt;
&lt;p&gt;用港口思维来管理事物，便于调度，避免遗漏。更重要的是此举的心理意义，因为你清楚这些杂七杂八的事情有了正式的暂存地，就可以安然接受它们在这里待上一阵子，不会总惦记着有什么事没做（如果你是秩序派），因此内心毫无焦虑。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/3wg83jbos.jpg"
loading="lazy"
alt="上下对比图，上方为快递包裹堆积如山的场景，下方为废金属垃圾场堆积如山的场景，展示缓冲区被用成垃圾场的后果"
&gt;&lt;/p&gt;
&lt;p&gt;但对于随性派，即使建立了缓冲区，缓冲区也会被用成垃圾场。&lt;/p&gt;
&lt;p&gt;这里不是要贬低某一类人，两类人不是固定的，必须对具体事情而言。每个人看重的事不同，你在这件事上是随性派，在另一件事上可能就会变成秩序派。多数人的电脑一团混乱，因为他们并不认为数字世界有多重要，他们的秩序建立在其他地方，比如社交圈子。同样，我不重视的东西，也会被我用成垃圾场。&lt;/p&gt;
&lt;p&gt;回到正题，如何避免垃圾场问题？就是要像港口一样，建立约束机制，避免缓冲区无节制膨胀，这非常关键。&lt;/p&gt;
&lt;p&gt;在数字资料方面，有许多自动化的手段，可以把停留时间太长的文件和资料清理掉，具体后面会讲。在实体物品方面，可以通过限定缓冲区空间容量，来迫使自己及时整理。在知识观念方面，则是时间在发挥最重要的过滤作用。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/RE3HTxG.jpg"
loading="lazy"
alt="Microsoft To Do待办软件界面截图，左侧平板显示Work/Home/Groceries等分类列表，右侧手机显示Groceries清单含Milk/Apples/Frozen pizza等项目"
&gt;&lt;/p&gt;
&lt;p&gt;顺便提一下待办清单与港口思维的区别：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;性质不同：
&lt;ul&gt;
&lt;li&gt;待办清单只是一种工具。它是某个具体的软件，你需要安装这个工具、掌握它的用法。&lt;/li&gt;
&lt;li&gt;港口思维是一种观念态度。任何信息和资料输入的地方都可以看作是港口。如果你认定电脑的桌面是港口，那它就是了。什么也没变，只是你会对桌面有新的理解，把它看成是文件的集散地。许多人就是这么做的，只是没意识到。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;存放的东西不同：
&lt;ul&gt;
&lt;li&gt;待办清单存放的只是概念。它把数字世界、现实世界的每件事抽象成一行字，列到一起集中管理。但事情相关的具体资料仍然在原地，待办清单不太擅长管理文件资料。&lt;/li&gt;
&lt;li&gt;港口存放的是具体的资料。它是一些真实存在的位置，电脑上某个文件夹，或家门口的一个小纸袋，在港口可以直接就地处理相应的事情。因此港口有不止一个，但配合一些自动化手段，也不至于太多，不会有散落各处的问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;工作量不同：
&lt;ul&gt;
&lt;li&gt;使用待办清单会增加工作量。事情还在那，还在等着你处理。你的任务只是推迟了，一点也没有减轻。甚至还加重了，因为你还要额外去软件里记上一笔，完了还得打个钩。对于事情本身，这个记录行为是额外的、多余的。&lt;/li&gt;
&lt;li&gt;港口思维的目的是减少工作量。它是对你已经熟悉的场所升级改造。在这里，重要的事，你自然会及时处理，无需提醒；不重要的，或者已经处理完的，让它自己消失。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="数字世界的港口"&gt;数字世界的港口
&lt;/h2&gt;&lt;p&gt;在数字资料方面，港口的精髓在于约束机制，用一系列自动化手段把停留太久的资料清除掉。这个滞箱费和滞港费比真正的港口要昂贵得多，不是罚钱，而是把超时货物直接销毁掉。&lt;/p&gt;
&lt;p&gt;这种看似危险的破坏机制，首先能督促你及时处理。更多时候也能反过来用，就由它去，让它替你清理资料，真正使你得到解放。&lt;/p&gt;
&lt;p&gt;自动化手段的具体实现点到为止，这些都可以通过公开资料学会。工具会随时间而变迁，观念才经得起时间考验，本文主要展示一下这些手段能做到什么，如何形成约束机制。&lt;/p&gt;
&lt;h3 id="手机文件港"&gt;手机文件港
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112_144709.jpg"
loading="lazy"
alt="安卓手机文件管理器截图，红圈标注0#FilePort文件夹含3个项目，下方列出0#Music/0#Resilio/Alarms/alipay/amap等文件夹"
&gt;&lt;/p&gt;
&lt;p&gt;我手机上有一个特殊的文件夹，是手机文件集散地，我给它命名就叫文件港。手机上不同应用下载的东西会被存到不同的地方，多数应用会存到“下载”文件夹，微信则会存到它特有的位置，百度云又另有一处，还有许多内容生产类软件也会输出到各自的文件夹。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112-144251.jpg"
loading="lazy"
alt="Tasker自动化应用设置截图，显示三个开关：自动转移下载目录/自动转移微信下载目录/自动转移音频输出目录，均处于开启状态"
&gt;&lt;/p&gt;
&lt;p&gt;我通过一个叫Tasker的自动化应用，把它们集中起来，这些位置一有新文件出现，统统移动到文件港。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112-144325.jpg"
loading="lazy"
alt="Tasker自动化应用设置截图，显示每日清理特定目录开关处于开启状态，时间设置为凌晨3:00AM执行清理特定目录任务"
&gt;&lt;/p&gt;
&lt;p&gt;Tasker还可以实现自动清理。我制定了一些规则，每天深夜，Tasker会把文件港里待了7天以上的文件删掉。我的文件港始终能保持相对清爽，文件容易找，也节省手机存储空间。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112_144823.jpg"
loading="lazy"
alt="Tasker任务编辑界面截图，标题清理特定目录，红圈标注Variable Set步骤，参数1设为%PathFilePort，参数2设为604800秒即7天"
&gt;&lt;/p&gt;
&lt;p&gt;这样一来，我需要在7天内把文件港里的事情处理完。不过这对我来说绰绰有余，通常我一两天就处理好了，然后也不用亲自善后，有用的移走，没用的等着自动删除。&lt;/p&gt;
&lt;p&gt;我的是安卓手机，这个能力也许只有安卓手机具备。苹果不太确定，不知道这些年系统开放性有没有改善，很可能没有。&lt;/p&gt;
&lt;h3 id="电话录音港"&gt;电话录音港
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112-145049.jpg"
loading="lazy"
alt="安卓手机文件管理器截图，显示PhoneRecord文件夹内电话录音文件列表，每个文件为aac格式，大小从99KB到689KB不等，日期从2022年到2022年"
&gt;&lt;/p&gt;
&lt;p&gt;这也是只有安卓手机具备的能力，我会对所有电话录音，存到系统指定的文件夹里，以备不时之需。但是绝大多数是5秒内就挂掉的广告电话，这些没必要留着，录音文件太多不方便将来查找。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112_144905.jpg"
loading="lazy"
alt="Tasker任务编辑界面截图，红圈标注Variable Set步骤，参数1设为%PathCallRecord，参数2设为100000字节即100KB，用于清理小文件"
&gt;&lt;/p&gt;
&lt;p&gt;Tasker可以实现按文件大小来清理。我制定了一些规则，每天深夜，Tasker会把电话录音港里小于100kB的文件删掉，这就把真正有用的录音筛选出来了。&lt;/p&gt;
&lt;p&gt;再配合一些同步盘，这些录音就能同步到电脑上，或者网盘里，进而长期保存。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112-145129.jpg"
loading="lazy"
alt="Dropsync文件夹配对设置截图，Remote folder设为/archive/电话录音，Local folder设为[Internal storage]/Record/PhoneRecord，同步方法为Two-way双向同步"
&gt;&lt;/p&gt;
&lt;p&gt;我用了Dropbox的一个第三方客户端，Dropsync，实现了手机文件夹与网盘同步，这点连官方客户端都做不到。&lt;/p&gt;
&lt;p&gt;这个港口的约束机制比较隐性。有用的电话本就不多，即便一刻不停地打电话，也有个一天24小时的天花板在，不会无止境膨胀，时间本身就是约束机制。因此可以放心就让它这么累积，作为备份。&lt;/p&gt;
&lt;h3 id="电脑文件港"&gt;电脑文件港
&lt;/h3&gt;&lt;p&gt;这个和手机文件港道理类似。但电脑有个好处，几乎所有软件下载都会放在系统的下载文件夹。我把下载文件夹当做港口，直接在这里处理事情，免去了集中的过程。而我的桌面从不放任何文件。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Snipaste_2023-01-12_14-52-38.jpg"
loading="lazy"
alt="Windows 11桌面截图，土星环壁纸背景，桌面上仅保留回收站一个图标，任务栏显示Edge/文件管理器/邮件等应用"
&gt;&lt;/p&gt;
&lt;p&gt;然后也有一些办法可以实现类似手机文件港的效果。Windows可以用File Juggler，我会让它清理掉18小时前的文件。Mac可以用系统自带的Automator+日历，我让它每天上午9点30把下载文件夹清空。总之，目的就是要日清。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Snipaste_2023-01-12_14-54-02.jpg"
loading="lazy"
alt="File Juggler自动清理规则设置截图，Description为Empty download，Monitor监控下载文件夹，If条件为Date modified Older than 18 Hours ago，Then动作为Send file to recycle"
&gt;&lt;/p&gt;
&lt;p&gt;清理的范围不同于手机文件港，但约束机制同理。电脑上每日处理的文件比手机多多了，日清才能把港口维持在一个秩序较高的状态。&lt;/p&gt;
&lt;p&gt;我已习惯于在下载文件夹里处理临时产生的资料。当天处理完，结果和中间产物，有用的存起来，没用的随它去。至于一天都处理不完的事情，重要性也低不到哪去，我会转移到正式的文件夹去处理，有点项目立项的味道。&lt;/p&gt;
&lt;h3 id="屏幕截图港"&gt;屏幕截图港
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Snipaste_2023-01-12_14-56-00.jpg"
loading="lazy"
alt="微信电脑端文件传输助手聊天窗口截图，红框标注底部工具栏中的剪刀截图按钮"
&gt;&lt;/p&gt;
&lt;p&gt;可能大多数人在电脑上截图用的是聊天软件，不用额外安装工具，但有个缺点，历史截图没有记录。有时候几天前截过的图要再用一次，就不得不去聊天记录里翻找，或者想办法重现当时截图的现场。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Snipaste_2023-01-12_14-57-15.jpg"
loading="lazy"
alt="Snipaste截图工具偏好设置界面截图，Output选项卡下Auto Save勾选开启，Path设为D:/Resilio/screenshots/Snipaste_$yyyy-MM-dd_HH-mm-ss.png"
&gt;&lt;/p&gt;
&lt;p&gt;我更倾向于使用Snipaste这样的截图工具，不必依赖聊天软件，除了丰富的图片标注功能外，更重要的是每张截图都能保存到我指定的文件夹，可重复使用。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Snipaste_2023-01-12_14-58-56.jpg"
loading="lazy"
alt="Resilio Sync截图对比，左侧Sync Home Pro显示screenshots文件夹状态正常1/3在线用户，右侧手机Folders界面显示screenshots文件夹Peers: 1"
&gt;&lt;/p&gt;
&lt;p&gt;个人电脑、工作电脑、手机有各自存放截图的文件夹。由于截图有时涉及敏感信息，我不想用网盘来同步，就用了没有云端的Resilio把它们关联起来，3台设备的截图就集中到了一起，每台设备都有一份，点对点保持同步。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112_144849.jpg"
loading="lazy"
alt="Tasker任务编辑界面截图，红圈标注Variable Set步骤，参数1设为%PathSyncScreenshots，参数2设为604800秒即7天，用于清理过期截图"
&gt;&lt;/p&gt;
&lt;p&gt;截图，尤其是录屏，还是很占空间的，久远的截图也没有保留价值。我制定了一些规则，每天深夜，Tasker会把屏幕截图港里待了7天以上的截图删掉。由于能同步，其他设备上的也一起删掉了。&lt;/p&gt;
&lt;p&gt;这个港口不仅有约束机制，还不需要费心思维护。截图我就照常截，既能找回近期的截图，还能把图片数量限制在一个可控范围，找起来不至于大海捞针。&lt;/p&gt;
&lt;h3 id="浏览器标签页港"&gt;浏览器标签页港
&lt;/h3&gt;&lt;p&gt;观察别人使用浏览器，发现大多数人属于“只开不关”型，常常把浏览器标签栏用成这样，然后第二天再全部关闭，从头来过：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Snipaste_2023-01-12_15-00-47.jpg"
loading="lazy"
alt="浏览器标签栏截图，显示密密麻麻挤满约20个标签页，包括Google搜索/Gmail/YouTube/文档等网站图标"
&gt;&lt;/p&gt;
&lt;p&gt;我原本没有这个问题，我关标签页关得很勤，有意识地及时把用完的标签页关掉。但这样也有弊端，会占用我的时间，还打断我的任务。常见的情况是，我点击网页，打开了一个新标签页，原先那个网页就没用了。像我这种标签页洁癖，就要立刻去把原先那个叉掉，即使用快捷键Ctrl/Cmd+Shift+Tab然后Ctrl/Cmd+W，比鼠标快一点，但也挺费劲。&lt;/p&gt;
&lt;p&gt;要不试着把浏览器也看作港口呢？标签页也是数字资料，一样可以用港口思维来管理。这一试，真香，我也可以只开不关，不做那些擦屁股的事情。&lt;/p&gt;
&lt;p&gt;这要用到一个叫Tab Wrangler的浏览器插件，支持Chrome应用商店的浏览器都可以安装。我制定了一些规则，超过12小时没动过的标签页，插件会自动把它关掉。第二天一觉起来，浏览器自己就干净了。至于要留到第二天处理的标签页，我只需要用浏览器的固定功能，固定的标签页不会被插件清理掉。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Snipaste_2023-01-12_15-02-18.jpg"
loading="lazy"
alt="Tab Wrangler浏览器插件设置界面截图，关闭不活动的标签页如果超过720分钟0秒，自动关闭标签页仅当已打开超过5个标签页，记住最多100个已关闭的标签页"
&gt;&lt;/p&gt;
&lt;p&gt;浏览器标签页港的约束机制和电脑文件港很像，日清。有用的标签页，主动保存一下；绝大多数都是没用的，不需任何额外处理。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;我的数字世界港口看似众多，但基本都是对已有位置的升级改造，不改变原先的使用习惯，没什么要记住的。电话录音港和屏幕截图港甚至都不需要花精力管理，全静默运转。&lt;/p&gt;
&lt;h2 id="物理世界的港口"&gt;物理世界的港口
&lt;/h2&gt;&lt;p&gt;港口思维能不能再推广到数字世界之外，减轻生活负担呢？&lt;/p&gt;
&lt;p&gt;完全没问题。这对很多人来说是自然而然的事情，开辟一个专用空间，用来存放待处理或分拣的物品，定期清理防止过度堆积。大家其实已经在这么做了，只是没有把它理论化。&lt;/p&gt;
&lt;p&gt;比如双十一期间，家里包裹爆棚来不及拆，不就是先堆在门口吗？此时鞋柜旁的这个小空间就成了一个港口，每天有空就来拆一些。&lt;/p&gt;
&lt;p&gt;又比如公司财务的办公桌，桌面上整整齐齐几摞A4纸。这摞是核对过待归档的，那摞是大家提交来的报销单。这也是港口，是文件的集散地。&lt;/p&gt;
&lt;p&gt;所以，在物理世界建立港口其实没什么好讲的，这个能力所有人都已经掌握了。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/IMG_20230112_103422.jpg"
loading="lazy"
alt="门后挂钩上挂着白色纸袋，纸袋上贴有手写Inbox字样和信封图标，用于存放有时效性的纸质文件"
&gt;&lt;/p&gt;
&lt;p&gt;不过我家还是有一个特别的小港口，可以展示一下。找了个大小合适的纸袋，贴上“Inbox”字样挂在门口，用来存放有时效性的纸质文件。&lt;/p&gt;
&lt;p&gt;什么叫“有时效性的纸质文件”？比如一年期的车险合同，申请个税专项附加扣除所需的医疗记录，或者帮朋友收集的纸质餐饮发票。这些都是在一定时期内有用，过了就变废纸，不必长期保存的文件。&lt;/p&gt;
&lt;p&gt;在数字化时代，家里这样的文件越来越少，但又不至于完全没有，这就是麻烦的地方。如果分门别类和长期资料放在一起，常常忘了清理，越积越多；如果就找个显眼地方放着，有些资料有效期还挺长，放了大半年后变成了垫纸，还能想得起来它在哪？&lt;/p&gt;
&lt;p&gt;这时候，就该给它们开辟一个港口。物理世界的港口，约束机制基本只能靠空间尺寸。开辟的空间不宜太大，否则会变成仓库；也不宜太小，周转不过来。这需要一段时间的尝试，才能找到合适的尺寸。&lt;/p&gt;
&lt;p&gt;总之，为物理世界的中间状态开辟空间，创造栖身之所。堵不如疏。&lt;/p&gt;
&lt;h2 id="金融世界的港口"&gt;金融世界的港口
&lt;/h2&gt;&lt;p&gt;金融世界处理的对象是钱。当然，没有哪一分钱是没用的、可以销毁的，所以这里主要解决的是资金的调度问题。&lt;/p&gt;
&lt;p&gt;我有许多张银行卡，积蓄、理财和日常开销主要靠招商银行，还房贷是从建设银行扣款，还有就职过的各家公司的工资卡。资金散落各处，难以管理和统计，每月入账工资、还房贷，转账转来转去也很烦人，是不是也能有一个资金的港口来集中调度呢？&lt;/p&gt;
&lt;p&gt;国内多数银行都有资金归集功能，而且是跨行的哦，去对应的银行App里搜一搜就能找到。它可以把两张不同银行的卡关联起来，设置规则全自动调度两张卡里的资金。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.victor42.work/posts/2023-01/Screenshot_20230112-150344.jpg"
loading="lazy"
alt="招商银行App资金归集设置截图，显示两条规则：每日保底归集中信银行到招商银行，每日智能归集建设银行最低5000元最高20000元到招商银行"
&gt;&lt;/p&gt;
&lt;p&gt;通过资金归集，每天招商银行会把中信银行工资卡里的资金都转过来，只留20块余额保持活跃。同时，招商银行每天会确保建设银行房贷卡里至少有5000余额用来还贷，不够了会打钱过去，而如果建行卡因为别人转账余额超过20000，则会把多出的部分收过来。&lt;/p&gt;
&lt;p&gt;如此，这张招行卡就变成了我的金融港口。资金最大限度集中到这里，然后用于理财。即使将来还有其他银行卡，有其他形式的资金往来，也能通过这边来调度。&lt;/p&gt;
&lt;h2 id="思想世界的港口"&gt;思想世界的港口
&lt;/h2&gt;&lt;p&gt;更进一步，港口思维在思想世界有没有用武之地？&lt;/p&gt;
&lt;p&gt;有的。在这里，它没有任何实体形式，没有文件夹，没有小纸袋，需要做的是改变你对信息的态度。&lt;/p&gt;
&lt;p&gt;信息分为3类：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;事件&lt;/strong&gt;：一件事它发生了，你知道了，这是事件。由于对全社会的长期影响微乎其微，当下更多作为谈资，过后便没有价值了。比如2018年电影《敦刻尔克》获得第90届奥斯卡金像奖。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识&lt;/strong&gt;：你学到了一个原理或者历史事件，这是知识。这个原理很基本，不受人类社会左右，长期发挥作用。或者这个历史事件对全世界影响重大且久远，你弄明白了它的前因后果。比如2011年福岛核事故改变了世界各国对核电的态度和政策。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;观点&lt;/strong&gt;：你对一个事物有某种看法或态度，这是观点。你的观点只存在于你的内心，对这个事物，大家见仁见智各有看法。与你看法相同和相左的两批人甚至长期争吵不休。比如你觉得中国南方也应该像北方那样冬天集中供暖。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;事件是客观的、短期的；知识是客观的、长期的；观点是主观的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你日常从各种渠道接收到的信息，都在塑造和改变你的思想世界。今天一个很大的问题是，这3类信息都不可靠。事件往往是虚假的、以讹传讹的；知识往往是错误的、趋利而误导人的；观点往往是偏激的、逼着人选阵营的。任由这样的信息塑造，或者说入侵你的思想世界，你人就废了。&lt;/p&gt;
&lt;p&gt;但接受信息无可避免，不能固步自封。每天海量的信息扑面而来，接受吧，可能吃下了太多垃圾；去验证吧，那么多信息哪里验证得过来。&lt;/p&gt;
&lt;p&gt;所以，为思想世界建立一座港口，意义非凡。建立这座港口，就是要在观念上接受信息中间状态的存在。通俗说，就是要有一个“嗯，我听说过，不知道真假，还没验证”的状态。如果你看到一则新闻、一篇科普，大脑立马就想着要表态，想痛骂新闻当事人，或者想把这科普转发到家族群，说明思想的港口还没建立起来。&lt;/p&gt;
&lt;p&gt;每天接收到的信息，不要直接当作事实放进记忆里，而是让它在这个“我听说过”的港口停留几天。在这几天里，足够重要的、与你息息相关事情，你自然会回忆起来，会去验证，了解它更多细节，形成自己的理解和态度，最终正式纳入你的思想世界。那些不重要的，不会再在你脑海里出现了，时间帮你把它们销毁了。即使将来某天再想起，它的状态也会变成：“嗯，我听说过，不知道真假，不重要，懒得验证”。&lt;/p&gt;
&lt;p&gt;还记得港口思维的原则二吗？并非所有事都要有始有终。遗忘，就是思想港口的约束机制。&lt;/p&gt;
&lt;h2 id="结语"&gt;结语
&lt;/h2&gt;&lt;p&gt;从数字资料到物理世界，再从物理世界到思想，港口思维让人改变自身，主动贴合这个变幻流动着的世界。也许是因为贴近事物真实的运转方式，人反而感到更加轻松自然。&lt;/p&gt;
&lt;p&gt;那这个抽象的“港口思维”到底在生活中起什么作用？怎么去想象这些虚拟的港口？&lt;/p&gt;
&lt;p&gt;我脑海中的画面是：港口是一座座勇敢的关隘，它奋力对抗着混乱和无序，把秩序留给后方那些需要保护的土地。那些土地就是你的生活、你的时间、你的思想。&lt;/p&gt;</description></item></channel></rss>