• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: unix style paths
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: unix style paths


  • Subject: Re: unix style paths
  • From: Kris Steinhoff <email@hidden>
  • Date: Thu, 18 Jul 2002 12:18:36 -0500 (CDT)

Roger,

thanks for your advice. it looks like your routines sorted out my problem
with the paths, but I'm still having some trouble. When I specify a path
of a file I know exists to try to move it Applescript says it could not
get the file, even though i know it exists.

---
application "Finder"
move file "/:Users:kris:Desktop:foo" to folder
"/:Users:kris:Documents"
end tell
---

I get the error
---
Execution Error
Finder got an error: Can't get file "/:Users:kris:Desktop:foo".
---

I'm not sure what I'm doing wrong.

thanks for any help

-kris

On Tue, 16 Jul 2002, Roger_Jolly wrote:

> Hi Kris,
>
> Why not just use:
>
> set dest to (path to preferences from user domain)
>
> I don't think you can use a Unix style path in Applescript directly, but it
> is relatively easy to convert one to something Applescript can use.
> I recently contributed the following sample routine (Get UTF8 Posix Path) to
> ScriptBuilders on www.macscripter.net that does just that and also works
> around the problem in the posix path command were it assumes that the shell
> and Applescript are using the same charactersets and so will fail if a
> filename contains a high ascii character. (The routine on macscripter comes
> with a more detailed commentary.)
>
> Hope this helps,
>
> Roger
>
> ---
> on run
> tell application "Finder" to set TheFiles to selection as list
> HandleFile(TheFiles)
> end run
>
> on open TheFiles
> HandleFile(TheFiles)
> end open
>
> on HandleFile(TheFileList)
> repeat with TheFile in TheFileList
> set ItemPath to GetUTF8StylePath(TheFile)
> display dialog "The posix path of: " & return & "\"" & (TheFile as
> alias) & "\"" & return & "is:" & return & "\"" & ItemPath & "\""
> set TheItem to GetItemFromPath(ItemPath)
> display dialog "The alias of:" & return & "\"" & ItemPath & "\"" &
> return & "is:" & return & "\"" & (TheItem as string) & "\""
> end repeat
> end HandleFile
>
> on GetUTF8StylePath(AnItem)
> if AnItem is desktop then
> set ThePath to POSIX path of (path to desktop)
> else
> set ThePath to POSIX path of (AnItem as alias)
> end if
> do shell script "ls -d \"" & ThePath & "\"" -- see if the posix path
> is the correct one
> if result is "" then
> -- use the url to produce the correct posix path
> -- A url encodes non-ascii characters by using a percentage (%) sign
> -- followed by two hexadecimal numbers.
> -- The shell encodes filepaths as if these pairs of digits were
> -- ordinary ascii characters.
> tell application "Finder" to set TheURL to url of AnItem
> set ThePath to ""
> set i to 17 -- strip off "file://localhost" at the beginning of a
> url
> repeat while i > length of TheURL
> if item i of TheURL is not "%" then
> -- as long as you haven't found a "%", just add the
> -- character to the path
> set ThePath to ThePath & (item i of TheURL)
> set i to i + 1
> else -- when you find a "%", translate the following two numbers
> -- into a ascii character, and continue with the rest of
> -- the path
> set TheHexNumber to item (i + 1) of TheURL & item (i + 2) of
> TheURL
> set ThePath to ThePath & (ASCII character
> Hex2Dec(TheHexNumber))
> set i to i + 3
> end if
> end repeat
> end if
> return ThePath
> end GetUTF8StylePath
>
>
> on Hex2Dec(TheNumber)
> -- Just a general converter of hexadecimal numbers into decimal
> set TheLength to length of TheNumber
> set DecNumber to 0
> repeat with i from 0 to (TheLength - 1)
> set TheCurrentChar to (character (TheLength - i) of TheNumber)
>
> if TheCurrentChar is in {"0", "1", "2", "3", "4", "5", "6", "7",
> "8", "9"} then
> set DecNumber to DecNumber + TheCurrentChar * (16 ^ i)
> else
> set DecNumber to DecNumber + ((ASCII number TheCurrentChar) -
> 55) * (16 ^ i) -- 55 = ASCII number "A" + 10
> end if
> end repeat
> return DecNumber
> end Hex2Dec
>
> on GetItemFromPath(ThePath)
> set TheFile to (do shell script "echo \"" & ThePath & "\" | tr :/ /:")
> try
> tell application "Finder" to set TheFile to item TheFile
> return TheFile
> end try
>
> set Success to false
> repeat while not Success
> set Success to true
> set TempAliasFile to "temp_" & time of (current date)
> try
> do shell script "ln -s \"" & ThePath & "\" /tmp/" &
> TempAliasFile
> on error theerror
> set Success to false
> end try
> end repeat
>
> tell application "Finder" to set TheFile to original item of file
> TempAliasFile of item "tmp" of startup disk
> do shell script "rm /tmp/" & TempAliasFile
> return TheFile
> end GetItemFromPath
>
>
>
>
> on 15-07-2002 18:52, Kris Steinhoff at email@hidden wrote:
>
> > Hi,
> >
> > Does anyone know how to make references to files with their unix style
> > path. such as "/Users/Shared/whatever"
> >
> > I am trying to copy some preference files to a users
> > ~/Library/Preferences folder and I want it to work for any user that
> > logs in. To do that I'll use 'system attribute "home"' and then
> > concatenate "/Library/Preferences" to the result. The reason I am not
> > using a shell script it that the preference files I am trying to copy
> > seem to be dual-fork (does that even make sense?) and using cp or even
> > ditto breaks the file.
> >
> > here's what I need to do (this is just pseudo code, the syntax is
> > probably wrong):
> >
> > set dest to (system attribute "HOME") & "/Library/Preferences"
> > copy [or move] "/private/Prefs" to dest
> >
> > and applescript doesn't seem to know what to do with the unix style path
> > reference, so does anyone know how to use a unix style path in
> > Applescript?
> >
> > thanks
> > -kris
> > _______________________________________________
> > applescript-users mailing list | email@hidden
> > Help/Unsubscribe/Archives:
> > http://www.lists.apple.com/mailman/listinfo/applescript-users
> > Do not post admin requests to the list. They will be ignored.
_______________________________________________
applescript-users mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/applescript-users
Do not post admin requests to the list. They will be ignored.

References: 
 >Re: unix style paths (From: Roger_Jolly <email@hidden>)

  • Prev by Date: Re: Quark Page Numbering?
  • Next by Date: RE: Go To Commands (AppleScript)
  • Previous by thread: Re: unix style paths
  • Next by thread: Re: unix style paths
  • Index(es):
    • Date
    • Thread