Obtenga una extensión de archivo no reconocida en AppleScript
-
25-10-2019 - |
Pregunta
Me preguntaba cómo devolver solo la extensión del archivo de una cadena. He probado la variable 'establecida para nombrar la extensión de ...' detallada en este Pregunta, pero eso solo parece funcionar para extensiones reconocidas. La idea es ordenar archivos con la extensión '.Meta' en su propia colección.
Lo que tengo ahora parece
tell application "Finder'
set everyName to name of every item in entire contents of this_folder
end tell
set metaFiles to {}
repeat with n from 1 to count of everyName
set currentName to item n of everyName
set currentExt to last word of currentName --this assignment fails
if currentExt is "meta" then
set end of metaFiles to currentExt
end if
end repeat
Soy nuevo en AppleScript, así que aprecio toda la ayuda/dirección. ¡Gracias!
Editar: solución hacky
Resolví esto usando la función dividida descrita aquí para romper el nombre de archivo después de cada período. Agarré la última cadena, me aseguré de que no fuera lo mismo que la primera cadena en caso de que no hubiera caracteres de período, y luego almacené el nombre de archivo correspondiente.
Solución
El nombre incluye la extensión del archivo, ya sea que el buscador lo reconozca o no. Así que solo ordena el nombre como este ...
tell application "Finder"
set metaFiles to (every item in entire contents of this_folder whose name ends with "meta") as alias list
end tell
Otros consejos
Si no está obteniendo una extensión de nombre, asegúrese de que realmente haya una y que no esté mirando el final del nombre. Si va a mover archivos, también deberá obtener la ruta, y no solo el nombre. Tampoco creo que hacer una lista de sus extensiones sea a lo que está buscando, tampoco se usan varios personajes diferentes para los límites de las palabras, pero un período no es uno de ellos.
¿Por qué no pedirle a Finder los elementos de su archivo?
tell application "Finder"
set metaFiles to (every item in entire contents of this_folder whose name extension is "meta") as alias list
end tell