Me he encontrado con un problema particular con un script más grande que estoy escribiendo. Estoy tratando de cambiar el nombre de todos los archivos en una carpeta con un prefijo de "temp_" y, al hacerlo, tener el alias de ese archivo todavía se puede abordar desde AppleScript después de que el prefijo se ha añadido al archivo. El siguiente código funciona en ALGUNAS máquinas pero no en otras. Lo he probado en un MBP de 2018 con 10.13, en un Mac Mini de 2012 con 10.13 y en un iMac de 2015 con 10.13 y 10.14. El iMac es la única máquina que tiene problemas con este código:
tell application "Finder"
set theSelection to the selection -- so you must have a folder with files selected in Finder before running this code.
set theFiles to the files of (item 1 of theSelection) --get the files
end tell
repeat with f from 1 to (count theFiles)
set aItem to item f of theFiles -- set a variable as an individual file
set pdfName to name of aItem --get the name of that file
set aliasItem to aItem as alias -- get the alias of the file
tell application "Finder"
set the name of aliasItem to (("temp_" & (name of aliasItem)) as string) --rename the file
end tell
display dialog (aliasItem as string) buttons {"Cancel", "OK"} default button "OK" --this is just here for testing the script, to see what the system still thinks the file is named
set posixPath to (POSIX path of aliasItem) --THIS is where the code fails on some machines.
end repeat
El código falla en ALGUNAS máquinas cuando intento convertir el alias en una ruta posix. En las máquinas en las que este script funciona, el diálogo de visualización de la prueba muestra el alias del archivo con el nuevo nombre. Así, foo.txt se convierte en temp_foo.txt. En las máquinas en las que el script falla, el diálogo de visualización vuelve a mostrar sólo foo.txt como nombre de archivo.
En la máquina en la que esto está fallando, el archivo será renombrado temp_foo.txt como debería ser, pero el alias nunca se actualiza, así que todavía piensa que el archivo es simplemente foo.txt. En las máquinas que fallan, el último comando para establecer la variable a la ruta posix del alias falla porque el alias es incorrecto ya que sigue apuntando al antiguo nombre del archivo.
Si es necesario, simplemente cambiaré el nombre de todos los archivos en un bucle, y luego volveré y obtendré las rutas posix en otro bucle, ya que al hacer un nuevo
set theTempFiles to files of (item 1 of theSelection)
Debería obtener una nueva lista de los archivos, ahora con su prefijo "temp_". Pero me duele poner un bucle de repetición que no creo que sea realmente necesario ya que el código funciona BIEN en algunas máquinas.
¿Quién puede ayudarme a que mi código funcione bien y quién puede hacer que falle? Me gustaría ver la magnitud del problema. También sería bueno si alguien pudiera decirme que estoy haciendo algo terriblemente mal en mi código, y es por eso que estoy recibiendo resultados impredecibles.