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

I'm stumped, AE Extendscript issue with for each loop

所以,我 运行 遇到了一个让我有点困惑的问题。为了让您了解我要完成的工作,我从 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”这一事实。这是有问题的,所以如果我取消注释 for each 循环中的变量,我最终会得到类似这样的东西:

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();
    
};