AppleScript for renaming new folders from filenames??

I want to put a bunch of files in their own individual folders with the foldername matching the file inside without the file extension.
So say I select 30 files > create folder for each file > move these files into their own folder > name the folder the filename w/o extension
I want to be able to do this with a single file or a batch. I've been messing around in Automator but haven't achieved what I want to do fully. I'd greatly appreciate anyone's help with this Thanks!!

You can use Automator to create a Service, and place a script in a Run AppleScript action, for example:
Service receives selected files or folders in Finder
Run AppleScript:
on run {input, parameters} -- create folders from file names and move
  set output to {} -- this will be a list of the moved files
  repeat with anItem in the input -- step through each item in the input
    set {theContainer, theName, theExtension} to (getTheNames from anItem)
    try
      set destination to (makeNewFolder for theName at theContainer)
      tell application "Finder"
        move anItem to destination
        set the end of the output to the result as alias -- success
      end tell
    on error errorMessage -- duplicate name, permissions, etc
      log errorMessage
      # handle errors if desired - just skip for now
    end try
  end repeat
  return the output -- pass on the results to following actions
end run
to getTheNames from someItem -- get a container, name, and extension from a file item
  tell application "System Events" to tell disk item (someItem as text)
    set theContainer to the path of the container
    set {theName, theExtension} to {name, name extension}
  end tell
  if theExtension is not "" then
    set theName to text 1 thru -((count theExtension) + 2) of theName -- just the name part
    set theExtension to "." & theExtension
  end if
  return {theContainer, theName, theExtension}
end getTheNames
to makeNewFolder for theChild at theParent -- make a new child folder at the parent location if it doesn't already exist
  set theParent to theParent as text
  if theParent begins with "/" then set theParent to theParent as POSIX file as text
  try
    return (theParent & theChild) as alias
  on error errorMessage -- no folder
    tell application "Finder" to make new folder at theParent with properties {name:theChild}
    return the result as alias
  end try
end makeNewFolder

Similar Messages

  • Creating list of folders from filenames with files organized in subfolders within

    Hi all. This is my first post in the Apple Support Community and I really hope that someone can help me as I'm using apple script for the first time.
    I have a list of hundreds of items that are each .jpg, .cr2, or .mov. Certain filenames have multiple extensions, ex: Q95A7170.CR2 & Q95A7170.jpg.
    I'm looking for an applescript or automator action that will allow me to create a folder out of each filename with 5 subfolders in it
    I need the subfolders to be called:
    AUDIO
    COLOR
    METADATA
    PICTURE
    PROXY
    In this instance I need all the .mov, .cr2, and .jpgs to be routed to the PICTURE folder. In later instances I'll need to route .mxf to PICTURE AND .xml .sif  & .thm to METADATA.
    So for example I have a list of that looks like this
    and I want a script that will make it look like this (i did all of this manually: creating the folders, renaming them, and putting the specific files into the picture folder)
    (not nearly a fraction of the list -- there are hundreds and hundreds of files)
    I've been researching applescripts for hours but the only script that i could make work and was very useful was this one to create the folders out of the names of the files:
    tell application "Finder"
              set selected to selection
              set current_folder to item 1 of selected
              set mlist to every file of current_folder
              repeat with this_file in mlist
                        set cur_ext to name extension of this_file
                        set new_name to text 1 thru -((length of cur_ext) + 2) of (name of this_file as text)
                        set new_folder to make new folder with properties {name:new_name} at current_folder
      move this_file to new_folder
              end repeat
    end tell
    Even with this script I had to manually copy all of the duplicate file named .jpgs out of the folder before it would properly run.
    Also I've found these scripts but I'm not sure what information to change. Like I said, I don't know much about code at all and I'm finding more research about it is just digging me deeper in a hole that I'm not entirely ready for.
    Here are the other two scripts that CLAIM they can do what I'm looking for, but I haven't gotten them to work.
    1.
    set pathToFolderOfTTUFiles to (path to the desktop as text) & "TTU:"
    tell application "Finder"
        set theFiles to every item of folder pathToFolderOfTTUFiles whose name extension is not "csv" and kind is not "Folder"
        repeat with theFile in theFiles
            set lengthOfExtension to (length of (theFile's name extension as text)) + 1
            set fileNameWithoutExtension to text 1 through -(lengthOfExtension + 1) of (theFile's name as text)
            set theFolder to make new folder at folder pathToFolderOfTTUFiles with properties {name:fileNameWithoutExtension}
            set theContentFolder to make new folder at theFolder with properties {name:"content"}
            make new folder at theContentFolder with properties {name:"archive"}
            set theContentDisplayFolder to make new folder at theContentFolder with properties {name:"display"}
            set theMetadataFolder to make new folder at theFolder with properties {name:"metadata"}
            make new folder at theMetadataFolder with properties {name:"archive"}
            set theMetadataDisplayFolder to make new folder at theMetadataFolder with properties {name:"display"}
            move theFile to theContentDisplayFolder
            set pathToCSV to pathToFolderOfTTUFiles & fileNameWithoutExtension & ".csv"
            if exists pathToCSV then move pathToCSV to theMetadataDisplayFolder
        end repeat
    end tell
    2.
    set myFolder to "FOLDERPATH"
    tell application "Finder" to set myFiles to folder myFolder's files as alias list
    repeat with aFile in myFiles
        tell application "System Events" to set {fileName, fileExt} to {name, name extension} of aFile
        set baseName to text 1 thru ((get offset of "." & fileExt in fileName) - 1) of fileName
        do shell script "mkdir -p " & (quoted form of (POSIX path of myFolder)) & "/" & baseName & "/{\"content\",\"metadata\"}/{\"display\",\"archive\"}"
        tell application "System Events"
            if fileExt is "pdf" then move aFile to (myFolder & ":" & baseName & ":content:display" as text)
            if fileExt is "csv" then move aFile to (myFolder & ":" & baseName & ":metadata:display" as text)
        end tell
    end repeat
    (the .pdf, .csv extensions are examples from the person who posted that discussion.)
    I tried using both of these codes but to no avail.
    Overall, this process is incredibly time-consuming and this is the first time I am using apple script so I know almost nothing about code.
    Also I don't know if this changes anything, but all of these files are on an external and I'm trying to save them back on this external.
    PLEASE HELP! I am a night assistant editor doing very tedious work at 3:00 AM or later and anything that would expedite this process would be so unbelievably appreciated. Please, someone who's more experience with code and who's smarter than I am on this topic, help me! I know there must be a way to automate this process!
    Please and so many thank yous! Really, this code would save me 40+ hours of eye-tiring work.
    Shelby

    This is how you'd do it in AppleScript.  I assume you can see how to expand it to different file extensions...
    set workFolder to "/path/to/folder"
    tell application "System Events"
      -- get files to work on
              set filesToProcess to files of folder workFolder whose visible is true
              repeat with thisFile in filesToProcess
                        set {fileName, fileExt} to {name, name extension} of thisFile
      -- get name of file without extension
                        set rootName to text 1 thru -((length of fileExt) + 2) of fileName
      -- make sure a correctly named folder exists
                        set targetFolder to my checkForFolder({parentFolder:workFolder, folderName:rootName})
      -- sort files into subFolders, making sure subfolders exist
                        if fileExt is "jpg" or fileExt is "cr2" or fileExt is "mov" then
                                  set targetSubfolder to my checkForFolder({parentFolder:targetFolder, folderName:"PICTURE"})
                                  move thisFile to targetSubfolder
                        else if fileExt is "xml" or fileExt is "sif" or fileExt is "thm" then
                                  set targetSubfolder to my checkForFolder({parentFolder:targetFolder, folderName:"METADATA"})
                                  move thisFile to targetSubfolder
                        else if fileExt is "mxf" then
                                  set targetSubfolder to my checkForFolder({parentFolder:targetFolder, folderName:"PICTURE"})
                                  move thisFile to targetSubfolder
                        else
      -- skip unknown file extensions
                        end if
              end repeat
    end tell
    to checkForFolder({parentFolder:fParent, folderName:fName})
      -- find or create a folder
              tell application "System Events"
                        if not (exists folder fName of folder fParent) then
                                  set output to POSIX path of (make new folder at end of folder fParent with properties {name:fName})
                        else
                                  set output to (POSIX path of (folder fName of folder fParent))
                        end if
              end tell
      -- returns a POSIX path
              return output
    end checkForFolder

  • Automator: Create new folders from .csv file and put images inside.

    I have a challenging Automator task to achieve. I need to
    1) create a set of folders labeled with the contents in column A of a csv file. (example: column A1 JoeBrown A2 SuzyBrown A3 JimBrown etc..) resulting in
    3 folders titled JoeBrown, SuzyBrown, and JimBrown
    2) take the image represented by an image number in column B of the same csv file and move that file into the folder that was created (example: A1 JoeBrown gets a folder created by the name JoBrown and column B IMG_1234.jpg is physically moved from within the same folder as the .csv file into the folder created by column A.
    Both the csv and img files would be in the same folder. I have the script to create a set of folders from a csv list just can't complete the moving of files based on the contents of column B.
    SUMMARY: I have a folder containing several images img_0001, img_0002, img_0003 etc. and a csv file that contains columnA a series of names and column B a series of jpg image numbers. I need to have a script that will create folders labeled whatever name is in column A (see the script below. it works great!) then move the images from column B to the folders generated from column A.
    The csv script is:
    tell application "Finder"
      set mgFolder to container of mgCSVfile as string
      repeat with x from 1 to count paragraphs of mgList
        set text item delimiters of AppleScript to ","
        set mgThisList to text items of paragraph x of mgList as list
        set text item delimiters of AppleScript to ""
        set mgTopFolder to item 1 of mgThisList
        if (exists folder mgTopFolder of folder mgFolder) is false then
          make new folder at mgFolder with properties {name:mgTopFolder}
        end if
        set mgNewFolder to (folder mgTopFolder of folder mgFolder) as alias
        repeat with i from 2 to count mgThisList
          if item i of mgThisList is not "" then
            set mgSubFolder to item i of mgThisList
            if (exists folder mgSubFolder of folder mgNewFolder) is false then
              make new folder at mgNewFolder with properties {name:mgSubFolder}
            end if
          end if
        end repeat
      end repeat
    end tell
    Thanks for any help that may come my way.

    This should work
    (assumes a true "," seperated file with only two items per line, i.e.: Test,Test.jpg):
    The Run Shell Script Action is:
    cd "${1%/*}"
    while read line         
    do         
         FolderName=${line%,*}
         ImageName=${line#*,}
         mkdir "$FolderName"
         mv "$ImageName" "$FolderName"
    done < "$1"

  • Imessage sends messages from email despite selecting phone number for "start new conversations from"

    On both my phone and my computer I have selected to start new conversations from my phone number, but just now I continued a conversation from my macbook and it sent it from my email address instead of my phone number! All the other answers I found for this question were outdated, I couldn't find "Caller ID" in settings for iOS 8 or Yosemite.

    If this is a continuing conversation, I don't believe the device looks at it as a new conversation, which is what that setting is for, from what I understand. If there is a checkmark by the phone number on all devices, then it should start there, but if the conversation was originally started from the email, I believe it will continue until you start a new conversation.

  • Applescript for creating job folders

    having trouble with an applescript. I'm trying to create an applescript that will create a job folder for me with job number and job name in which I can include folders and subfolders.
    I found this script by searching google and it's pretty much what I need (thank you to who ever might have created it). I altered the folder names to what I need, and it seems to work for the most part but throws an error at the end that says : Finder got an error: Can't make "drive:path" into type item
    however it still makes everything i need. I would just like to get rid of the error.
    the script editor highlights the line of text that's having issues for me, but since i barely knew what I was doing in the first place I don't know how or what to change.
    if someone could help me that would be great. here is the code.
    set thepath to {"drive:path"}
    set JobName to text returned of (display dialog "Please enter Job Name:" default answer "Job Name")
    set incomingDate to (current date)
    set numYear to year of incomingDate as number
    set textYear to text -2 through -1 of (numYear as string)
    set JobNum to text returned of (display dialog "Please enter Job Number:" default answer {textYear & "xxx"})
    set JobNumName to JobNum & "_" & JobName
    set newsublist to {{"Builds", {"versions"}}, {"Links"}, {"Fonts"}, {"Proofs"}}
    tell application "Finder"
    set baseFolder to make new folder with properties {name:JobNumName}
    repeat with i from 1 to count newsublist
    try
    set {tier2, t2Subs} to {item 1, item 2's items} of item i of newsublist
    set tier2Folder to make new folder at baseFolder with properties {name:(tier2)}
    repeat with tier3 in t2Subs
    make new folder at tier2Folder with properties {name:(tier3)}
    end repeat
    on error
    make new folder at baseFolder with properties {name:(item 1 of item i of newsublist)}
    end try
    end repeat
    activate
    open thepath
    end tell

    There are a few differences with Leopard that still get me from time to time. Tiger's AppleScript doesn't like path to desktop, so instead use the statement:
    set ThePath to (get path to desktop folder)
    The other thing I hadn't noticed before is if there is an error, the script just stops instead of throwing up a dialog. If you are doing something like using an illegal file name or trying to create a folder in a location that you don't have permissions, then unless the MakeFolderStructure statement is in a try statement it will fail silently. Adding an error display will at least tell you if there is an error, so a script that works in Tiger (as well as Leopard) is:
    <pre style="
    font-family: Monaco, 'Courier New', Courier, monospace;
    font-size: 10px;
    margin: 0px;
    padding: 5px;
    border: 1px solid #000000;
    width: 720px; height: 340px;
    color: #000000;
    background-color: #FFDDFF;
    overflow: auto;"
    title="this text can be pasted into the Script Editor">
    -- make a folder structure at the currently selected Finder item
    tell application "Finder" to try -- get the current selection
    set ThePath to the first item of (get selection)
    if the last character of (ThePath as text) is not ":" then -- a file
    set ThePath to the container of ThePath
    end if
    on error -- default to the desktop
    set ThePath to (get path to desktop folder)
    end try
    set JobName to text returned of (display dialog "Please enter Job Name:" default answer "Job Name")
    set textYear to text -2 through -1 of ((current date)'s year as text)
    set JobNum to text returned of (display dialog "Please enter Job Number:" default answer {textYear & "xxx"})
    set JobNumName to JobNum & "_" & JobName
    try
    MakeFolderStructure out of {JobNumName, {"Builds", {"versions"}, "Links", "Fonts", "Proofs"}} at ThePath
    on error ErrorMessage number ErrorNumber -- oops
    activate me
    display alert "Error " & ErrorNumber message ErrorMessage
    end try
    to MakeFolderStructure out of SomeItem at SomeFolder
    make the folder structure defined in SomeItem at SomeFolder
    SomeList defines the structure:
    nested list items create folders in the previous text item - {"A", {"B", {"C"}}} = /A/B/C
    empty text items will create untitled folders
    parameters - SomeItem [mixed]: the folder structure
    SomeFolder [alias]: the destination folder
    returns nothing
    set ParentFolder to SomeFolder
    if class of SomeItem is list then
    repeat with AnItem in SomeItem
    if class of AnItem is list then -- add subfolder(s)
    MakeFolderStructure out of AnItem at SomeFolder
    else -- add a new child folder at the current parent
    tell application "Finder" to make new folder at ParentFolder with properties {name:AnItem}
    set SomeFolder to the result as alias
    end if
    end repeat
    else -- add a new (potential) parent folder
    tell application "Finder" to make new folder at SomeFolder with properties {name:AnItem}
    set ParentFolder to the result as alias
    end if
    end MakeFolderStructure</pre>

  • Applescript for deleting user folders

    Hi,
    So I am managing a group of about 80+ iMacs and an Xserve.  I would like to delete the contents of the users folder excluding the arduser (user i will be using to run script), shared folder and a desktop alias file.  I want to be able to connect to the server from computer im wiping click on the script and have it run without having to choose folders and click extra things, just double click and done.  Ideally I would like this script to do much more, such as delete all cs3, 4, 5 apps and a couple of app folders all in one swoop.  Would love some help, I am new to Applescripts and am unfamiliar witht the language.
    Thanks

    I'm not sure I understand this. Why would you log into the server to wipe the users on the local machine? Why not wipe them from the local machine directly?
    In any case, this is better accomplished with bash rather than AppleScript.
    Suppose you have a user account called 'John' on the local machine. You'd use
    sudo rm -rf /Users/John/*
    and that would wipe out everything in the users account, but leave the parent directory 'John' in place (and empty).
    The next time you log in to user 'John' on that machine, the OS will recreate default System folders (Desktop, Documents, Downloads, Library, Movies, Music & Pictures).

  • Suggestion for renaming new Zen 4GB/8GB/1

    Just bought myself a new "Zen 4GB". I think Creative should rename it to "Zen Paperclip". Seem i
    need to reboot it several times (7 times in 2 days). Talk about product quality issues. What
    a waste of $30.
    No mention on the box either that it doesn't support UMS - how many media players out there don't
    act as a mass storage devices these days. Even my old 3rd gen ipod can be mounted on my Linux box
    as a disk and i can copy files onto it and play. Maybe even "Zen Microsoft" as a name ?
    My wife's calling it the "Zen paperweight" - it's too light for even that job...
    Off to the Apple store.. The new iTouch looks nice. Well it doesn't have a SD slot, but that doesn't
    work too well according to this list, and no radio, but i can browse the web, and have a lot more apps
    soon, maybe even internet radio.
    Bad Creative, bad..

    I was not comparing a 4GB model with a 8GB iTouch which is their base model iTouch. So there's only $00 in it if you compared 8gb with 8gb. Plus you are looking at much better features and stability on the apple (or so my friend tells me). Half the so called features on the Zen don't work very well, and i'm not the only one. Look at this very forum.
    >Who told you that you can't use the ZEN as an USB Storage Device? Mine works fine this way.
    I told you. I have one, and it doesn't support UMS. You cannot plug it into a Mac or Linux and see the device. You are limited to MTP support only ! If you give your player to someone else who doesn't have the MTP driver installed in windows it will NOT work as a plain storage device. Try it before you respond.
    And no i don't disconnect it while it's docked when it decides to crash/hang. Even if i did i'd consider it a bug in the firmware nevertheless.Message Edited by terraforma on 0-4-20072:46 PM

  • Picking colour for a new swatch from photos

    Often i paste some photos in indesign, I pick colour from it and then add colour to a vector graphic say
    I pick a shade of blue colour from a photograph and then fill a rectangle with that colour.
    How can I make a swatch for it? One way I know is to determine the RGB or CMYk values for that colour and then manually fill those values in new swatch options to create that colour. Is there a faster way, maybe picking a colour using some eyedropper from the rectangle's fill and making a swatch?

    How can I make a swatch for it?
    If I understand correctly, with the recangle color still selected go to windows>color panel and on flyout menu choose add to swatch.

  • Applescript for "remove email copies from server"

    I have an email POP account which I use on several computers as well as my cell phone.
    I'm looking for an applescript which I could place on the desktop of my primary computer which essentially performs the action located @ accounts> advanced> remove copies from server>"remove now" so that I could delete the emails I've already reviewed from my server before having them picked up by my other computers and phone.
    Anyone seen something like this?

    Is there an applescript command that will delete a message from the server.
    I have a lot of rules that route my emails when they come in but I do not want to delete them from the server when they are moved from the inbox. This allows me to rout my messages on my desktp and still recieve them on my iphone.
    However I do want to delete any messages "from the server" that are routed to my junk mail. This will save me from having to deal with them on my iphone and since they are in my junk I can look there if I suspect a false positive.
    Is there any such ability with applescript?

  • Applescript for running specific action from action wizard...

    Hi Forum,
    using this applescript I m running my "INDEGN" action from action wizard...
    the first step is activated through the applescript.. (ie. INDEGN action is correctly picked)
    but how to "click next button" to proceed to next steps..
    tell application "System Events"
        tell application process "Acrobat"
            tell application "Adobe Acrobat Pro" to activate
            click the menu item "INDEGN" of menu 1 of menu item "Action Wizard" of the menu "File" of menu bar 1  ## here it is not cliking next button.....
            click button "Next" of window "Action: INDEGN"
    click button "Close" of window "Action: INDEGN"
        end tell
    end tell
    many thanks for the support..

    HI DAVE,
    thanks for the reply,,
    Is there any other way to run "my action" from action wizard. using script....
    Would be  a great help if advised....
    Many thanks...

  • How to rename folders from english to chinese with trackpad?

    So I have an iMac and I'm trying to rename some folders from english to traditional chinese. I have the trackpad and I know how to pull up the language input and everything. Sometimes I can rename folders to chinese and sometimes I can't. Any way to fix this?

    james_slc wrote:
    I only use the handwriting IM. Using the normal keyboard IM takes too long because you have to do it phoenetically.
    The point is to find out whether your problem is connected only to the handwriting IM or to Chinese in general.  So could you perhaps try using the pinyin or other keyboard IM and see if the same problem exists or not?

  • Why does itunes delete all my existing photo gallery on my ipad when i import new photos from my PC ?

    Why does itunes delete all my existing photo gallery folders when I try to import (sync) new folders from my pc ?

    you nees to make sure you are selecting everythin that you want on the iPad even things that are already on the iPad, if not it will remove anything not checked in iTunes.
    Click HERE for more information on Syncing

  • Can't rename new page

    I have a problem with Muse CC and 2014. When I'm trying to rename new page from Untitled to something else, Muse tells me that an error has occurred: menuItemBox U4650 has no associated page! I tried to make a new site in Muse CC and 2014, the same bug.

    Could you please send us your .muse file at [email protected] along with a link to this thread? We'll repair and return it. If the file is larger than 20Mb you can use a service like Adobe SendNow, Dropbox, WeTransfer, etc. Thanks.
    FWIW, the bug that caused this error within your file has been fixed for the release of Muse.
    Sorry for the inconvenience.

  • Signing up for a new plan with Droid 2 global

    I want to sign up for a new plan (I am not a current verizon customer), switching from Tmobile. The problem is that the phone I want is the droid 2 global, which I cant get in stores until the 29th. I could order online, but I wont be at my home for the next few weeks to pick up the phone.
    There is a verizon store where I am going, but I will not be able to sign up for the new plan from there (due to some un related reasons that you dont need to worry about)
    My main question is, is there a way for me to sign up for verizon's services before monday the 29th, and only pick up the phone from a different store later?

    What is the point in signing up for the services before you have the phone?  Your current T-Mobile device will not work with Verizon.  If you have a Verizon phone already, you can call in or go to the store and ask to have the device activated on month-to-month service and port your number over if you wish.  You'll then have service on your Verizon phone, but no contract, leaving you free to sign a contract and get the Droid 2 at the subsidized price when and where you wish.
    If you don't have a Verizon phone, you'd just be paying for service you can't use, so why not wait until the Droid 2 is available at the store you want to buy it from?

  • Can't receive new mail from hotmail

    Okay, so I got my MacBook Air two days ago and everything has been running fine, except for the fact that in the Mail app I can't receive email from my hotmail account past a certain point. When it goes to receive new mail for the account it lists itself as receiving 2320 incoming messages. I know that this figure is too high, perhaps about double what it should be getting from the account. However, the main problem lies in the fact that the Mail app only ever receives 455 of those messages, which leaves me missing pretty much every email I've received this year. The Mail app works fine for receiving new emails from my university email account (which uses pod51000.outlook.com for its incoming mail server, as opposed to hotmail's pop3.live.com). I've looked through the online support pages and looked for people having a similar problem here, but neither of these have been of any real help. I have no idea what the problem could be, so any suggestions or advice would be greatly appreciated. Thanks in advance
    If any additional information would be helpful then I'd be more than happy to provide it.

    had the same problem and solved it!
    I've posted the solution here https://discussions.apple.com/thread/2705264?start=15&tstart=0

Maybe you are looking for

  • Display image in jsp by retrieving it from DB2

    I insert image in to db2 table using the code given below PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO BOOKCOVERS VALUES(?,?)"); File imageFile = new File("c:\\redbookcover.jpg"); InputStream inputStream = new FileIn

  • How to upload the text file into smart forms

    Hi Experts, can any one tell me that how to upload  the text file or html file to SAP Script form or smart forms i have download the form info from SAPscript form.to text file. now i want to upload the text file to smartforms. is it possible ? if it

  • Buying a legal copy of cs2

    hello, is buying from here http://www.amazon.com/gp/offer-listing/B00080DPTA?ie=UTF8&colid=&coliid=&qid=&sr= gives me a legal license to cs2? will I then be able to legally download and use photoshop cs2 from the site? thanks.

  • Navigation attributes authorization

    Hi,all In NW2004s new auth concept allows to create auth for nav attributes as for chars. But! We have situation when one char is used as nav attribute in several chars. I.e. Char A, used in B__A, C__A and D__A. Is that nesesary to create auth for ev

  • How to reset password without iTunes ?

    Need to reset password without iTunes.  The laptop that had it was damaged and inaccessible.