javascript - 自动将目标文件夹中的所有脚本包含在已运行的脚本中 - CS6
问题描述
我想在运行的脚本中动态地#include
从目标文件夹中获取所有脚本。无需每次都写出每个脚本名称/路径。这意味着:=>您将任何脚本放入目标文件夹=>当您运行脚本时,来自目标的脚本/脚本会自动包含到运行的脚本中。
编辑:您还可以从任何范围内的注入代码中调用任何函数或变量。
到目前为止,我写了这个脚本:
var runnedScriptPath = $.fileName;
var runnedScriptFolderPath = getScriptFolder(runnedScriptPath);
var targetScriptsFolderPath = runnedScriptFolderPath + "/foo";
var targetScriptsFolder = Folder(targetScriptsFolderPath);
includeScriptsFromTargetFolder(targetScriptsFolder);
function includeScriptsFromTargetFolder(targetFolder) {
var targetFolderFiles = targetFolder.getFiles();
var scriptFilesToInclude = new Array;
for (var i = 0; i < targetFolderFiles.length; i++) {
if (targetFolderFiles[i] instanceof File) {
if (targetFolderFiles[i].toString().match(/.jsx$/)) { // .jsx is extension from Adobe's scripts
scriptFilesToInclude.push(decodeURIComponent(targetFolderFiles[i]) ); // decodeURIComponent method is used becouse path is URl
}
}
}
for (var i = 0; i < scriptFilesToInclude.length; i++) {
#include scriptFilesToInclude[i]; // <===== this line gives error!
}
}
function getScriptFolder(scriptPath) {
return scriptPath.match(/^(.*[\\\/])/g); // match(/^(.*[\\\/])/g) "Select everything before the last forward slash" //
}
但是后来我得到了这个错误:我在第 235 页的“预处理器指令”一章
中的javascript 工具指南 cs6.pdf中找不到任何合理的解决方案。
我的理由是:结果是字符串,所以它应该被视为. 然后将字符串路径加载到脚本中。但不是它,我想它试图在已运行脚本的文件夹中找到一个名为: 的文件。
scriptFilesToInclude[i]
"some path/runned code folder/foo/bar.jsx"
scriptFilesToInclude[i]
==================================================== =============
注意:
我尝试使用eval:
eval("#include scriptFiles[i]");
以及JSON.pars():
JSON.parse("#include scriptFiles[i]");
绕过错误,但它也不起作用。
提前感谢您的帮助。
解决方案
使用$.evalFile()
代替eval()
:
$.evalFile(scriptFiles[i]);
推荐阅读
- javascript - 如何在函数内部动态设置模板引用
- javascript - 如何通过 id 或 class_name 从另一个 div 标签获取动态 html 警报内容(文本)?
- python - 将列表值分配给 Pandas df 列会生成 NaN 或长度错误
- php - 将相似的值放在php Json中的数组中
- r - 获取变量组合矩阵
- typescript - 在带有 p5js 的打字稿中使用具有正确类型的 loadTable
- python - 如何使用python提取以兄弟节点信息为条件的节点信息?
- python - 如何为 np.savetxt 正确添加头,从列表和 np..ndarray 转换为我需要的?
- windows - Windows Task Sheduler + pytesseract + 多处理有什么问题?
- ios - 如何将文本字段中的字符串转换为 Swift 中的 Int?