É possível fazer com que o Picasa importe fotos de uma câmera para subpastas usando um determinado padrão relacionado a datas?

1

Eu tenho a seguinte estrutura de pasta de fotos no meu disco:

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

Onde:

  • YYYY indica o ano, como 2011
  • MM denota o mês, como 04
  • DD denota o dia, como 27

No entanto, quando eu importo fotos usando o Picasa, ele solicita uma pasta e coloca todas as fotos dentro dessa pasta. A partir de agora, não consegui colocar as fotos importadas na estrutura de pastas do meu gosto.

Isso é possível no Picasa?

    
por mark 27.04.2011 / 08:53

2 respostas

1

Não consegui fazer com que o Picasa fizesse isso e acabei usando a maravilhosa ExifTool . Cito:

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

Recusivamente renomeie todas as imagens em DIR e quaisquer subdiretórios contidos para o formato image_HHMMSS.EXT (onde 'ext' é a extensão de arquivo original) e mova-os para uma nova hierarquia de diretório com base na data de modificação do arquivo, com caminho nomes como 2006/03/27/image_105859.jpg .

    
por 31.05.2011 / 06:45
0

Uma alternativa para a solução de Sam, se você estiver preparado para mexer em um pouco de vbs, é colá-lo em um arquivo .vbs, editando as duas primeiras linhas conforme apropriado (isso economiza em 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

As renúncias usuais se aplicam ...

    
por 04.08.2011 / 21:57

Tags