あなたの質問への答えはイエスです。JSFL はあなたのためにこれを行うことができます。例を挙げて、何が起こっているのかを説明するために、できるだけ jsfl コードにコメントしてみます。明確な質問があればお気軽にお尋ねください。
そのため、FLA ファイルをすべて保持する他の多くのフォルダーを含むフォルダーがコンピューター上にあると仮定しましょう。このコードは、メインの格納フォルダー内のすべてのフォルダーをループ処理します。これを「allFLAs」と呼び、「allSWFs」というフォルダーに出力します。以下のコードは、allFLA の元のフォルダーを allSWFs 内に保持します。したがって、FLA ファイルが allFLAs/group1/file1.fla にある場合、allSWF には allSWFs/group1/file1.swf があります。これは、同じ名前のファイルがある場合に、それらが互いに上書きしないようにするためです。+ dirList[n] を exportSWF 行から削除するだけで、すべての SWF がメインの allSWFs フォルダーに配置されます。
このコードは、実行するファイルのパブリッシュ設定を変更せず、終了時に Flash IDE を閉じます。
// Main folder that holds the folders containing all the FLA files.
var folder = 'file:///C:/path/to/main/folder/allFLAs';
if (!null) {
// Create an array of all the folders that are contained in our main folder.
var dirList = FLfile.listFolder(folder, 'directories');
// Loop through each item in the array to find each FLA file.
for (var n = 0; n<dirList.length; ++n) {
// Create an array of all FLA files in the directory list array.
var list = FLfile.listFolder(folder+'/'+ dirList[n] + '/*.fla', 'files');
fl.outputPanel.trace('file:///C:/path/to/output/folder/allSWFs/'+ dirList[n]);
// Create containing folder for this file based on the name of the folder in the directory list array, in the new output folder.
FLfile.createFolder('file:///C:/path/to/output/folder/allSWFs/'+ dirList[n]);
var flaName;
var swfName;
for (var i = 0; i<list.length; ++i) {
flaName = list[i];
swfName = list[i].split('.')[0]+'.swf';
fl.outputPanel.trace(flaName+' exported as '+swfName);
// open the document, publish to SWF, and close without saving.
fl.openDocument(folder+'/'+ dirList[n] +'/'+flaName);
fl.getDocumentDOM().exportSWF('file:///C:/path/to/output/folder/allSWFs/'+ dirList[n] + '/'+swfName, true);
fl.closeDocument(fl.getDocumentDOM(), false);
}
}
}
fl.quit()