1 votos

Applescript creando enlace Sym con espacios en la ruta

Estoy intentando crear un enlace simbólico a un directorio de red cuando me conecto. Esto está trabajando para un par de otros directorios sin espacios en el nombre, pero para la vida de mí no puedo conseguir este director para trabajar y estoy asumiendo que tiene que ver con los caracteres de espacio.

en una ventana de terminal puedo crear con éxito el enlace manualmente con

ln -s "/Volumes/D/Contracts and Price Sheets"/ ~/Desktop/Contracts

mi applescript actual tiene este aspecto

tell application "Finder"
  mount volume "smb://user:password@192.168.0.0/D"
  set contractsPath to "/Volumes/D/Contracts and Price Sheets/"
  if not (exists ((path to desktop as text) & "hDrive")) then
    do shell script "ln -s /Volumes/D/Home/user/ ~/Desktop/hDrive"
  end if
  if not (exists ((path to desktop as text) & "sDrive")) then
    do shell script "ln -s /Volumes/D/Data/ ~/Desktop/sDrive"
  end if
  if not (exists ((path to desktop as text) & "Inventory")) then
    do shell script "ln -s /Volumes/D/Inventory/ ~/Desktop/Inventory"
  end if
  if not (exists ((path to desktop as text) & "Contracts")) then
    do shell script "ln -s " & quoted form of the POSIX path of contractsPath & " ~/Desktop/Contracts"
  end if
end tell

Seguro que todos estos condicionales son una mala costumbre, pero no soy un programador experimentado. De todos modos, las tres primeras unidades de montar con éxito, sin embargo, el directorio final (con espacios en el título) simplemente no funciona. He peinado la web en busca de respuestas, pero seguir recibiendo ningún resultado.

Se agradece cualquier aportación. Gracias.

0 votos

¿Ha probado a añadir comillas a la cadena contractsPath, por ejemplo "\"/Volumes/D/Contracts and Price Sheets/\"" ?

0 votos

Sí, también he probado a escapar la barra invertida con otra barra invertida así que /Volumes/D/Contracts\\ and\\ Price\\ Sheets/

1voto

kaiser Puntos 106

Hm, he ejecutado un script similar en AppleScript Editor pero me funciona bien:

set contractsPath to "/Users/subhu/Test test test/"
do shell script "ln -s " & quoted form of the POSIX path of contractsPath & " ~/Desktop/test"

Tenga en cuenta que, si escapa una barra invertida con otra barra invertida, debe utilizar sólo contractsPath no quoted form of the POSIX path of contractsPath por ejemplo:

set contractsPath to "/Users/subhu/Test\\ test\\ test"
do shell script "ln -s " & contractsPath & " ~/Desktop/test"

Pruébalo.

0voto

adayzdone Puntos 1258

ContractsPath ya es una ruta posix. Inténtalo:

do shell script "ln -s " & quoted form of contractsPath & " ~/Desktop/Contracts"

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