ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
``` function writeReport(path, reportText) { var reportFile = new File(path ); //path + "/font_report.txt" if(reportFile.exists){ //alert('file already exists'); reportFile.open("w"); //reportFile.open("a"); //a是append模式 reportFile.write(reportText); reportFile.close(); } else{ var RCF_file = new File(reportFile); RCF_file.open("w"); RCF_file.write(reportText); RCF_file.close(); } //alert('Report Complete'); } //读取txt文档 var path = "D:/编辑0000文字.txt"; var myFile = new File(path); if (myFile != null) { // open file var fileOK = myFile.open("r"); if (fileOK){ var text; var arrayText = new Array(); while (!myFile.eof){ text = myFile.readln(); if (text == "") text = "\r" ; arrayText.push(text); } // close the file before exiting myFile.close(); } else{ alert("文件打开失败!"); } }else{ alert("请先选择txt文件."); } //获取所有合成 var runType = 2; //1---正常运行 //2---检测错误 @136@新郎:许鹏飞 //3---只文本 var str = ""; var index = 1; // 获取当前激活的合成 var activeComp = app.project.activeItem; if (activeComp == null ) { alert("主合成没有激活,请修改下AE模板"); } //----------第一层(最外面一层)开始 var curComp = activeComp; if (curComp != null && (curComp instanceof CompItem)) { //----------for numLayers 开始---------------------------- for (var i = 1; i <= curComp.numLayers; i++) { var curLayer = curComp.layer(i); if (curLayer.shy == true) continue; if (curLayer.sourceText == null ) //curLayer != null && (curLayer instanceof CompItem) { //----------第二层开始 if (curLayer.source == null) continue; var curComp2 = curLayer.source; //----------for numLayers 开始---------------------------- for (var i2 = 1; i2 <= curComp2.numLayers; i2++) { var curLayer2 = curComp2.layer(i2); if (curLayer2.shy == true) continue; if (curLayer2.sourceText == null ) //if (curLayer2 != null && (curLayer2 instanceof CompItem)) { } else { //---------sourceText开始----------------- //curLayer var sourceText2 = curLayer2.sourceText; if (sourceText2.numKeys == 0) { // textValue is a TextDocument. Retrieve the string inside var oldString2 = sourceText2.value.text; if(index <=arrayText.length ) { var newString = arrayText[index-1]; newString = newString.replace(/\@[^\)]*\@/g,""); //去掉@@ sourceText2.setValue(newString); } if(runType == 2) str = str + "@层名2:" + curLayer2.name + "@" +index.toString() + "@arrayText-" +arrayText.length.toString() + "@"+ oldString2 + "\r\n"; index++; } else { // Do it for each keyframe: for (var keyIndex2 = 1; keyIndex2 <= sourceText2.numKeys; keyIndex2++) { // textValue is a TextDocument. Retrieve the string inside var oldString2 = sourceText2.keyValue(keyIndex2).text; if(index <=arrayText.length ) { var newString = arrayText[index-1]; newString = newString.replace(/\@[^\)]*\@/g,""); //去掉@@ sourceText2.setValueAtKey(keyIndex2,newString); } if(runType == 2) str = str + "@层名2:" + curLayer2.name + "@" +index.toString() + "@arrayText-" +arrayText.length.toString() + "@"+ oldString2 + "\r\n"; index++; } } //---------sourceText结束----------------- } } //----------for numLayers 结束---------------------------- //----------第二层结束 } else { //---------sourceText开始----------------- //curLayer var sourceText = curLayer.sourceText; if (sourceText.numKeys == 0) { // textValue is a TextDocument. Retrieve the string inside var oldString = sourceText.value.text; //str = str + "@层名1:" + curLayer.name + "@" +index.toString() + "@"+ oldString + "\r\n"; if(index <=arrayText.length ) { var newString = arrayText[index-1]; newString = newString.replace(/\@[^\)]*\@/g,""); //去掉@@ sourceText.setValue(newString); } if(runType == 2) str = str + "@层名2:" + curLayer.name + "@" +index.toString() + "@arrayText-" +arrayText.length.toString() + "@"+ oldString + "\r\n"; index++; } else { // Do it for each keyframe: for (var keyIndex = 1; keyIndex <= sourceText.numKeys; keyIndex++) { // textValue is a TextDocument. Retrieve the string inside var oldString = sourceText.keyValue(keyIndex).text; //str = str + "@层名1:"+ "@" +index.toString()+"@" + oldString + "\r\n"; if(index <=arrayText.length ) { var newString = arrayText[index-1]; newString = newString.replace(/\@[^\)]*\@/g,""); //去掉@@ sourceText.setValueAtKey(keyIndex,newString); } if(runType == 2) str = str + "@层名2:" + curLayer.name + "@" +index.toString() + "@arrayText-" +arrayText.length.toString() + "@"+ oldString + "\r\n"; index++; } } //---------sourceText结束----------------- } } //----------for numLayers 结束---------------------------- } //----------第一层结束 //alert(str); writeReport ("D:/提取的字幕(批量替换记录).txt", str); alert("提取字幕(批量替换记录)成功,位置为 D:/提取的字幕(批量替换记录).txt"); /* /* //获取所有合成 var str = ""; var index = 1; for (var j = 1; j <= app.project.items.length; j++) { // Get the active comp //var activeItem = app.project.activeItem; var activeItem = app.project.item(j) ; //当前合成 if (activeItem != null && (activeItem instanceof CompItem)) { //all layers by zhenhuamcu var activeComp = activeItem; for (var i = 1; i <= activeComp.numLayers; i++) { var curLayer = activeComp.layer(i); var sourceText = curLayer.sourceText; if (sourceText != null) { if (sourceText.numKeys == 0) { // textValue is a TextDocument. Retrieve the string inside var oldString = sourceText.value.text; str = str + "@合成名:" + activeItem.name + "@层名:" + curLayer.name + "@" +index.toString() + "@"+ oldString + "\r\n"; index++; } else { // Do it for each keyframe: for (var keyIndex = 1; keyIndex <= sourceText.numKeys; keyIndex++) { // textValue is a TextDocument. Retrieve the string inside var oldString = sourceText.keyValue(keyIndex).text; str = str + "@" +index.toString()+"@" + oldString + "\r\n"; index++; } } } } } } */ ```