如何让Adobe ExtendScript脚本每次打开文件对话框定位到指定初始文件夹
解决ExtendScript脚本每次打开文件对话框回到初始UNC路径的问题
问题分析
你的脚本目前依赖系统文件对话框的初始路径设置,但系统会自动记住用户上次导航到的目录,导致再次运行时无法回到指定的UNC共享文件夹。ExtendScript没有直接提供GetCurrentDirectory类的函数来修改对话框缓存,但可以通过设置当前工作目录的方式强制对话框每次打开到目标路径。
解决方案
通过设置Folder.current全局属性,将脚本的当前工作目录指定为你的目标UNC路径,这样文件对话框会以此为起始目录,不受系统缓存影响。修改后的脚本如下:
function loadLibs() { var serverPath = "\\XXXXXXXXXXXXXXXXXXXXX"; var folderDlg = Folder(serverPath); if (folderDlg.exists) { // 设置当前工作目录为目标共享文件夹 Folder.current = folderDlg; // 打开文件选择对话框,强制从目标路径开始 var libraryItems = folderDlg.openDlg( "Choose the library file(s) you want to open", "*.indl", true ); if (libraryItems === null) { return; } // 处理多选情况,逐个打开库文件 if (typeof libraryItems !== "Array") { libraryItems = [libraryItems]; } for (var i = 0; i < libraryItems.length; i++) { app.open(libraryItems[i]); } } else { alert("Cannot find InDesign libraries folder."); return; } } loadLibs();
关键修改说明
- 添加
Folder.current = folderDlg;:将脚本的当前工作目录强制设置为目标共享文件夹,文件对话框会继承这个路径作为起始目录,彻底绕过系统的目录缓存。 - 增加多选处理逻辑:原脚本中如果用户选择多个文件,
openDlg会返回数组,这里补充了数组判断,确保每个选中的库文件都能被正确打开。
额外说明
这种方法的核心是通过修改ExtendScript的全局工作目录,而非直接修改系统对话框的缓存,属于ExtendScript层面的可靠解决方案,适用于所有Adobe CC应用的ExtendScript开发。
内容的提问来源于stack exchange,提问作者Grant Doole
相关产品推荐
相关产品推荐

