我很困惑,每个循环都有AE Extendscript问题

问题描述

因此,我在这里遇到了一个我有些困惑的问题。为了让您了解我要完成的工作,我正在After Effects中执行此操作,以获取目录中图像的路径,然后编写一个文本文件,将每个图像的路径作为新行保存。 。当前,一切都几乎可以按照我的要求工作,而问题出在AE如何列出文件路径。我感觉好像缺少了一些简单的东西,但这是我遇到的一段代码

var saveTextFile = File(savePath + "images.txt");

if(saveTextFile.exists)
    saveTextFile.remove();

saveTextFile.encoding = "UTF8";
saveTextFile.open("e","TEXT","????");

var files = Folder (savePath).getFiles("*.PNG");
    if (files.length == 0) return;

        for each (var file in files){
            //var drive = '/x';
            //var fixName = fileName.replace(drive,'X:');
            //name = fixName.toString();
            //$.writeln(name)
            saveTextFile.writeln(('file ' + "'" + file.toString() + "'"));
            }
saveTextFile.close();

每个(文件中的var文件)部分的问题均存在。如果按原样运行,则最终得到的路径类似于此处列出的路径:

file '/x/_CURRENT_/sequence_PNG_00000.png'
file '/x/_CURRENT_/sequence_PNG_00001.png'
file '/x/_CURRENT_/sequence_PNG_00002.png'
file '/x/_CURRENT_/sequence_PNG_00003.png'
file '/x/_CURRENT_/sequence_PNG_00004.png'
file '/x/_CURRENT_/sequence_PNG_00005.png'

在这很好,除了它读取驱动器号为“ / x”的事实。这是有问题的,因此,如果我在每个循环中取消注释变量,则最终会得到类似以下内容

file 'X:/_CURRENT_/sequence_PNG_00000.png'
file 'X:/_CURRENT_/sequence_PNG_00000.png'
file 'X:/_CURRENT_/sequence_PNG_00000.png'
file 'X:/_CURRENT_/sequence_PNG_00000.png'
file 'X:/_CURRENT_/sequence_PNG_00000.png'
file 'X:/_CURRENT_/sequence_PNG_00000.png'

这很好,因为它在字符串中正确格式化了X驱动器...。但是,它为每个图像将字符串中的增量数字重命名为00000.png。

有人可以发现我可能忽略的地方吗?

解决方法

   for each (var file in files){

看起来不像有效的JS语法。另外Extendscript是ES3,因此也没有[1,2,3].forEach(function(ele,i,arr){})

尝试

for(var i = 0; i < files.length;i++){
    var file = files[i];
    // ...and so on
}
,

我不确定我的代码在这里是否最有效,但它是否有效,目前我只想问一下。
这就是最终为我工作的部分。

var saveTextFile = File(savePath + "images.txt");

    if(saveTextFile.exists)
        saveTextFile.remove();

    saveTextFile.encoding = "UTF8";
    saveTextFile.open("e","TEXT","????");
    
    var files = Folder (savePath).getFiles("*.PNG");
        if (files.length == 0) return;
        
           for(var i = 0; i < files.length;i++){
                var file = files[i];
                var drive = '/x';
                var fileIt = file.toString();
                var fixName = fileIt.replace(drive,'X:');
                $.writeln(fixName);
                saveTextFile.writeln(('file ' + "'" + fixName + "'"));
            }
        
    saveTextFile.close();
    
};