Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have the following photo folder structure on my disk:

'My Pictures'
|
+--> 'Photos'
     |
     +--> YYYY
          |
          +--> YYYY_MM_DD

Where:

  • YYYY denotes the year, like 2011
  • MM denotes the month, like 04
  • DD denotes the day, like 27

However, when I import photos using Picasa, it asks for a folder and places all the photos inside that folder. As of now, I have failed to make it place the imported photos into the folder structure of my liking.

Is this possible at all in Picasa?

share|improve this question
add comment

2 Answers 2

I couldn't get Picasa to do this, and ended up using the wonderful ExifTool. I quote:

exiftool -r -d %Y/%m/%d/image_%H%M%S.%%e "-filename<filemodifydate" DIR

Recusively rename all images in DIR and any contained subdirectories to the form image_HHMMSS.EXT (where 'ext' is the original file extension), and move them into a new directory hierarchy based on date of file modification, with path names like 2006/03/27/image_105859.jpg.

share|improve this answer
add comment

An alternative to Sam's solution, if you're prepared to dabble in a bit of vbs is to paste this into a .vbs file, editing the first two lines as appropriate, (this actually saves into a 2007/2007-01/2007-01-24 structure):

trgFolder = "C:\Users\Benjol\Pictures\Current"
srcFolder = "J:\DCIM"

set fso = createObject ("Scripting.FileSystemObject")

set fld = fso.GetFolder(srcFolder)
for each fldr in fld.SubFolders
  for each fil in fldr.files
    newFolder = CheckFolder(fil.DateCreated)
    if fso.FileExists(newFolder & "\" & fil.Name) then
      Call fil.Copy (newFolder & "\cpy_" & fil.Name)
    else
      Call fil.Copy (newFolder & "\" & fil.Name)
    end if
    'Delete original
    Call fil.Delete(true)
  next

next

Call Msgbox ("Done copying folders, you can now disconnect " & srcFolder)

Function CreateFolder(trg)
  if not fso.FolderExists(trg) then
    Call fso.CreateFolder(trg)
  end if
  CreateFolder = trg
End Function

Function CheckFolder(dt)
  y=Year(dt)
  m=Right("0" & Month(dt), 2)
  d=Right("0" & Day(dt), 2)
  CheckFolder = CreateFolder(trgFolder & "\" & y)
  CheckFolder = CreateFolder(CheckFolder & "\" & y & "-" & m)
  CheckFolder = CreateFolder(CheckFolder & "\" & y & "-" & m & "-" & d)
End Function

The usual disclaimers apply...

share|improve this answer
    
How do you run VBS on Mac? –  mark Aug 6 '11 at 7:01
    
@mark, I don't :) –  Benjol Aug 23 '11 at 11:32
    
Figured so..... –  mark Aug 23 '11 at 14:26
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.