Applescript creando un enlace Sym con espacios en la ruta

1

Estoy intentando crear un enlace simbólico a un directorio de red cuando inicio sesión. Esto funciona para un par de otros directorios sin espacios en el nombre, pero por mi vida no puedo hacer que funcione este único director. y asumo que tiene que ver con los caracteres del espacio.

en una ventana de terminal puedo crear correctamente el enlace manualmente con

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

mi applecript actual se ve así

tell application "Finder"
  mount volume "smb://user:[email protected]/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

Estoy seguro de que todos estos condicionales son malos hábitos, pero no soy un programador experimentado. De todos modos, las tres primeras unidades se montan con éxito, sin embargo, el directorio final (con espacios en el título) simplemente no funcionará. He revisado la red en busca de respuestas, pero no obtengo resultados.

Cualquier y toda entrada es muy apreciada. Gracias!

    
pregunta user1191167 11.01.2013 - 20:52

2 respuestas

1

Hm, he ejecutado un script similar en el Editor de AppleScript pero funciona bien para mí:

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 diagonal inversa con otra barra diagonal inversa, debe usar solo 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.

    
respondido por el thade 20.01.2013 - 12:42
0

contractPath ya es una ruta posix. Prueba:

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

    
respondido por el adayzdone 12.01.2013 - 05:12

Lea otras preguntas en las etiquetas