Я в тупике, проблема с 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. Это проблематично, поэтому, если я раскомментирую переменные в цикле 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 для каждого изображения.

Может ли кто-нибудь заметить, что я мог упускать из виду?


person zach mandt    schedule 14.10.2020    source источник


Ответы (2)


   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
}
person fabianmoronzirfas    schedule 15.10.2020
comment
Переполнение стека. ;) - person fabianmoronzirfas; 18.10.2020

Я не уверен, что мой код здесь самый эффективный, но он эффективен, и на данный момент это все, о чем я могу просить.
Это фрагмент, который в итоге сработал для меня.

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();
    
};
person zach mandt    schedule 15.10.2020