1.准备工作

ps下载:我这里下载的ps是2024版本的,下面是百度网盘分享链接

链接:下载地址

提取码:nkxs

vscode下载:直接在官网下载最新版本

下载地址:Visual Studio Code - Code Editing. Redefined

2.vscode创建项目

新建项目script_back

2.1插件安装

在vscode插件商城中搜索ExtendScript,需要安装两个插件ExtendScript和ExtendScript Debugger。

第一个插件是可以支持extendscript语法,第二个插件则是为我们提供断点调试功能。

2.2项目配置

插件安装好后,要配置下extendscript debugger插件所需要的配置。

在Run and Debug 选项卡中(快捷键Ctrl+Shift+D)点击create a launch.json file 然后选择 ExtendScript。

vscode+extendscript编写ps文件自动备份脚本_Photoshop

vscode+extendscript编写ps文件自动备份脚本_文件备份_02

我们需要改造下launch.json配置,下面是改造后的配置

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "extendscript-debug",
            "request": "launch",
            "name": "Launch ExtendScript",
            "script": "${workspaceFolder}/back.jsx",
        }
    ]
}

request:我们采用launch的方式启动并调试这个程序

然后我们多加了一个script配置,这个配置的是程序启动执行的脚本文件路径,${workspaceFolder} 是当前项目路径,back.jsx是项目根路径下的脚本文件。script这个属性是插件2.0版本新加的属性,所以网上查的很多配置是不适用2.0版本的。

2.3代码提示和高亮显示

配置好后就可以编写脚本文件了,但是我们最好还要配置下代码提示和高亮来帮助我们开发。

1.先安装JavaScript (ES6) code snippets 插件,下载安装方法就不详细描述了。

2.安装完成后在.vscode文件夹下新建settings.json文件,配置如下

{
    "files.associations": {
      "*.jsx": "javascript"
    },
    "emmet.includeLanguages": {
      "javascript": "javascriptreact"
    },
    "javascript.suggest.completeFunctionCalls": true,
    "editor.quickSuggestions": {
      "strings": true
    },
    "editor.parameterHints.enabled": true
  }

3.在项目根路径下新建 typings文件夹,在新建extendscript.d.ts文件,这个配置是可以支持extendscript的一些语法

declare const app: {
    documents: {
      add(width: number, height: number, resolution: number, name: string): Document;
    };
    foregroundColor: {
      rgb: {
        red: number;
        green: number;
        blue: number;
      };
    };
  };
  
  declare class Document {
    selection: {
      select(region: [number, number][]): void;
      fill(color: { rgb: { red: number; green: number; blue: number } }): void;
      deselect(): void;
    };
  }

4.在项目根路径下新建tsconfig.json文件,配置如下,这个是配置了typings配置文件的路径

{
    "compilerOptions": {
      "target": "es6",
      "module": "commonjs",
      "strict": true,
      "baseUrl": ".",
      "paths": {
        "*": ["typings/*"]
      }
    },
    "include": ["typings/**/*.d.ts"]
  }
 

3.开始编写脚本文件

我写的脚本文件是用来备份ps当前正在使用的psd格式文件,代码如下

//文件备份
 // 检查是否有打开的文档
 if (app.documents.length > 0) {
    // 获取当前文档
    var doc = app.activeDocument;
    // 获取文档名称
    var docName = doc.name;
    // 尝试获取文档格式
    var docFormat = "";
    try {
        // 获取完整文件路径并提取扩展名
        var fullPath = doc.fullName.fsName;
        var fileExtensionIndex = fullPath.lastIndexOf(".");
        if (fileExtensionIndex != -1) {
            docFormat = fullPath.substring(fileExtensionIndex + 1).toLowerCase();
        }
    } catch (e) {
        // 未保存的文档会抛出错误
        docFormat = "";
    }
    if(docFormat.length > 0 && docFormat == "psd"){
        // 获取当前日期
        var currentDate = new Date();
        // 获取当前年份
        var currentYear = currentDate.getFullYear();
        // 获取当前月份(0-11,所以需要加1)
        var currentMonth = currentDate.getMonth() + 1;
        // 指定文件夹路径
        var folderPath = "E:/Adobe/PS/备份文件/"+currentYear + "-" + currentMonth +"/";
        // 创建一个Folder对象
        var folder = new Folder(folderPath);
        // 检查文件夹是否存在
        if (!folder.exists) {
            // 文件夹不存在,创建文件夹
            folder.create();
        }
        // 指定另存为的路径和文件名
        var newPath = folderPath + docName;
        var saveFile = new File(newPath);
        if(saveFile.exists){
            // 尝试删除文件
            saveFile.remove()
        }
        // 保存选项
        var saveOptions = new PhotoshopSaveOptions();
        saveOptions.alphaChannels = true;
        saveOptions.annotations = true;
        saveOptions.embedColorProfile = true;
        saveOptions.layers = true;
        saveOptions.spotColors = true;
        // 另存为
        doc.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);
    }
} 

4.代码调试

在调试之前需要把ps开启调试模式,打开ps->选择编辑->首选项->增效工具 勾选启用开发人员模式。如图:

vscode+extendscript编写ps文件自动备份脚本_Photoshop_03

4.1 直接在ps中执行脚本文件

这种是最简单的执行方式,打开ps->选择文件->脚本->浏览  然后选择要执行的脚本文件就可以了。这样执行是不需要调试的,也只能手动执行脚本。

4.2 vscode+ps调试

在vscode中启动项目执行run and debug  启动应用选择ps,前提需要先启动ps才有这个选项。

vscode+extendscript编写ps文件自动备份脚本_extendscript_04

运行成功后就可以查看运行结果了(在ps中打开一个psd文件),也可以打个断点进行调试。

5.定时执行脚本文件

因为ps没有定时执行脚本的功能,所以我们可以借助操作系统的定时任务功能实现。

先写一个执行文件run_photoshop_script.bat用来启动ps并运行脚本,代码如下

@echo off
REM 启动 Photoshop 并运行脚本
start "" "D:\soft\Adobe Photoshop 2024\Photoshop.exe" -r "E:\Adobe\PS\script_back\back.jsx"

然后在任务计划里面创建定时任务来执行这个bat文件