在为 Photoshop 编写脚本时打开文件夹中具有 JPG 扩展名的所有文件

Open all files in folder with JPG extension while scripting Photoshop

有谁知道如何在 Photoshop 中打开所有具有特定文件扩展名的文件,而不是使用 VBScript 的单个文件名?或者,我可以使用 JS 函数来执行此操作吗?

您可以打开任何文件

CreateObject("WScript.Shell").Run("""ENTER LOCATION""")

对于文件扩展名,请尝试将位置更改为搜索。例如,要从我的电脑搜索 .jpg,位置是

search-ms:displayname=Search%20Results%20in%20This%20PC&crumb=fileextension%3A~<.jpg%20OR%20System.Generic.String%3A.jpg&crumb=location:%3A%3A{20D04FE0-3AEA-1069-A2D8-08002B30309D}

不要在驱动器或驱动器子文件夹中打开流行的扩展程序,否则您的计算机会崩溃。将文件限制在子文件夹和文件最少的文件夹中。

您也可以打开这样的应用程序,或者您可以在批处理文件中打开 system32。 我不确定这是否是你想要的答案,因为它不清楚。

如果我理解正确,VBScript 可用于通过 Windows 脚本宿主在外部自动化 Photoshop。

Targeting and Referencing the Application object

Because you run your AppleScript and VBScript scripts from outside the Photoshop application, the first thing your script should do is indicate that the commands be executed in Photoshop

Link to PDF, p. 22

VBScript 可以访问 FileSystemObject 类型,它是 Microsoft Scripting Runtime 库的一部分。 FileSystemObject 允许您遍历文件夹中的每个文件并检查扩展名。

Option Explicit

Dim app
Set app = CreateObject("Photoshop.Application")

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim fle
For Each fle In fso.GetFolder("c:\path\to\folder").Files
    If fso.GetExtensionName(fle.Path) = ".jpeg" Then

        'Issue the command to open the file in the default format
        'This uses the Open method from the Photoshop object model
        app.Open fle.Path

    End If
Next

参考文献:


请注意,可以在外部控制 Javascript 文件中编写相同的代码:

var app = new ActiveXObject('Photoshop.Application');
var fso = new ActiveXObject('Scripting.FileSystemObject');

var enumerator = new Enumerator(fso.GetFolder('c:\path\to\folder').Files);
while (!enumerator.atEnd()) {
    var filepath = enumerator.item().Path;
    if (fso.GetExtensionName(filepath) == '.jpeg') {

        app.Open(filepath);

    }
    enumerator.moveNext();
}

但脚本指南中的示例使用的是内部执行的 Javascript 文件;它们必须保存在一个特定的文件夹中,并且只能在应用程序打开后 运行,并且在应用程序的上下文中。