1 votos

¿Cómo puedo especificar una unidad en Applescript sin el nombre de la unidad?

Tenía una unidad de sistema principal en mi iMac llamada "Macintosh HD" y escribí mis scripts para referirme a los archivos de esa unidad. Por ejemplo, para llegar a mi directorio de la biblioteca, tenía "Macintosh HD:Users:me:Documents:Dev:AppleScript:" como ruta completa.

El problema es que estoy teniendo problemas de conducción y necesito reemplazar mi disco duro antes de que se estropee. Para hacer un seguimiento, cloné mi unidad de sistema original ("Macintosh HD") a "System Temp", que se conecta por USB. Puedo permitirme usar esta unidad durante unos días, pero necesito devolverla a un servidor tan pronto como pueda. A principios de esta semana recibiré una nueva unidad que será la unidad de reemplazo a largo plazo, llamada "System".

No quiero llamar a cada unidad "Macintosh HD" porque eso me dificulta el seguimiento, pero me gustaría que los scripts funcionaran durante todo el proceso.

¿Cómo puedo, en Applescript, especificar una ruta de acceso a una unidad sin usar el nombre de la HD? Si es el disco duro principal, ¿cuál es el equivalente de la forma Linux de "/" para el sistema de archivos Root, así que usaría "/home/me" para llegar a mi directorio principal? ¿Hay alguna forma de hacer algo como "::Users:me" en su lugar? Sólo quiero ser capaz de decirle a Applescript algo como, "Esto está en la unidad principal del sistema", o "Usa la unidad de arranque".

Probé muchas alternativas posibles y ninguna funcionó.

3voto

qarma Puntos 71

En lugar de usar rutas de archivos HFS, usa rutas posix.

Utilice Eventos del sistema para operaciones de archivos, que maneja tanto rutas posix como rutas HFS. Incluso sabe cómo expandir el ~ así que tu directorio de inicio puede ser expresado simplemente como folder "~/" y tu disco principal está montado en folder "/" .

En cuanto a las unidades USB adjuntas, esencialmente tienes que referirte a ellas por su nombre. Estarán listados bajo folder "/Volumes" o puedes usar este comando (a través de Eventos del sistema ):

get the name of every disk where it is ejectable -- i.e. attached drives

No soy capaz de decir si he respondido a todas sus preguntas. Deje un comentario y rellenaré lo que parezca que falta.

0 votos

He probado a cambiar "Macintosh HD:Users:me:Documents:Dev:AppleScript:" por "/Users/me/Documents/Dev/Applescript" y no funciona. Voy a añadir más. Esto es para una biblioteca de utilidad mía y creo que parte del problema es que estoy tratando de cargar esta biblioteca como un script. La línea que parece ser un problema es "set MyUtil to load script pathMyUtil".

1 votos

Tus dos rutas son efectivamente equivalentes, pero para acceder a la carpeta en cuestión, necesitas referenciarla a través de Eventos del sistema es decir tell app id "com.apple.systemevents" to set scptdir to folder "~/Documents/Dev/AppleScript" . load script es un Adiciones estándar todos los cuales entienden las rutas posix sin necesidad de calificarlas. Por lo tanto, si pathMyUtil tiene el valor "/Users/me/Documents/Dev/AppleScript/utils.scpt" (o como se llame el archivo), entonces load script pathMyUtil está bien. (Aunque hay que tener en cuenta que el uso de la tilde sólo funciona en un SystemEvents contexto).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X