Estoy escribiendo un flujo de trabajo automático para trabajar con archivos y carpetas. Lo estoy escribiendo en JavaScript porque estoy más familiarizado con él.
Me gustaría recibir una carpeta y obtener el nombre de la carpeta y los archivos que contiene.
Esto es más o menos lo que he intentado:
La ventana recibe las carpetas actuales en Finder (solo me interesa la primera y única carpeta)
Obtener contenido de la carpeta
JavaScript:
function run(input,parameters) { var files = []; for(let file of input) files.push(file.toString().replace(/.*\//,'')); // etc }
Esto funciona, pero no tengo el nombre de la carpeta. Usando esto, obtengo el nombre completo de la ruta de cada archivo, por lo que lo ejecuto a través del método replace()
.
Si omito el paso 2 anterior, obtengo la carpeta, pero no sé cómo acceder al contenido de la carpeta.
Puedo falsificar la carpeta obteniendo el primer archivo y eliminando el nombre del archivo, pero me pregunto si existe un enfoque más directo para obtener tanto la carpeta como su contenido.
Lo tengo funcionando. Por si alguien tiene una pregunta similar:
// Window receives current folders in Finder var app = Application.currentApplication() app.includeStandardAdditions = true function run(input, parameters) { let directory = input.toString(); var directoryItems = app.listFolder(directory, { invisibles: false }) var files = []; for(let file of directoryItems) files.push(file.toString().replace(/.*\//,'')) ; // etc }
No incluyo el paso Obtener contenido de la carpeta, sino que itero a través de la carpeta usando app.listFolder()
en su lugar. El método replace()
es recortar todo hasta la última barra inclinada, dando el nombre base del archivo.