55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
|
|
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);
|
|
}
|
|
});
|