var currentApp = Application.currentApplication(); currentApp.includeStandardAdditions = true; var finder = Application("Finder"); var systemEvents = Application("System Events"); // Ask a folder to process var sourcePath = currentApp.chooseFolder ({ withPrompt: "Choose the source folder" }).toString(); var sourceFolder = systemEvents.aliases.byName(sourcePath); // Create the destination folder var container = sourceFolder.container(); var containerPath = container.path(); var destinationFolder = finder.make({ new: "folder", at: containerPath, withProperties: { name: sourceFolder.name() + " - Edited" } }); // Create an array of items to be processed var items = systemEvents.aliases.byName(sourcePath).diskItems; var selectedItems = []; for (var i = 0; i < items.length; i++) { var item = items[i]; if (item.class() != "folder" && item.visible()) { selectedItems.push(item.name()); } } // Process every item var createdFolders = []; selectedItems.forEach(function(itemName) { var item = systemEvents.aliases.byName(sourcePath + "/" + itemName); var name = item.name().match(/(.*) - (.*)/); try { var folderName = name[1]; if (!createdFolders.includes(folderName)) { var newFolder = finder.make({ new: "folder", at: destinationFolder, withProperties: { name: folderName } }); createdFolders.push(folderName); } item = finder.move(item.path(), { to: destinationFolder.folders[folderName] }); item.name = name[2]; } catch (error) { console.log("Error (item: " + item.name() + "): " + error); } });