Applescript che crea il collegamento Sym con gli spazi nel percorso

1

Sto provando a creare un collegamento simbolico a una directory di rete quando eseguo l'accesso. Funziona per un paio di altre directory senza spazi nel nome, ma per la vita di me non riesco a far funzionare questo solo director e presumo che abbia a che fare con i caratteri dello spazio.

in una finestra di terminale posso creare manualmente il collegamento con

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

il mio attuale applescript ha questo aspetto

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

Sono sicuro che tutti questi condizionali sono una cattiva abitudine, ma non sono un programmatore esperto. Ad ogni modo, le prime tre unità vengono montate correttamente, tuttavia la directory finale (con spazi nel titolo) non funzionerà. Ho controllato il web per avere risposte, ma continuo a non ottenere risultati.

Qualsiasi input è molto apprezzato. Grazie!

    
posta user1191167 11.01.2013 - 20:52
fonte

2 risposte

1

Hm, ho eseguito uno script simile in AppleScript Editor ma per me funziona bene:

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

Tieni presente che, se esegui l'escape di una barra rovesciata con un altro backslash, devi utilizzare solo contractsPath , non quoted form of the POSIX path of contractsPath , ad esempio:

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

Provalo.

    
risposta data 20.01.2013 - 12:42
fonte
0

contractsPath è già un percorso posix. Prova:

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

    
risposta data 12.01.2013 - 05:12
fonte

Leggi altre domande sui tag