passarito Posted May 8, 2012 at 10:14 AM Report #453718 Posted May 8, 2012 at 10:14 AM Olá todos, Ontem deparei-me com um problema que já me tinha ocorrido a espaços anteriormente. Queria alterar a data de vários (muitos) ficheiros. Posso dizer que andei a tirar fotos com duas máquinas e queria ordenar as imagens por data/hora, só que uma das máquinas tinha a data trocada, o dia no lugar do mês e vice-versa. Dei uma olhada na net, assim por alto, mas o que encontrei foi algo que alterava ano, mês, dia horas, minutos e segundos. Tudo igual para todos os ficheiros! Ora, e se eu quiser alterar só o dia e deixar tudo o resto intacto? ou só os minutos? Ou só a data? Bom, acho que já viram onde quero chegar... Assim, ontem à noite meti mãos à obra e desenvolvi um mini-programa para fazer este trabalhinho que às vezes me assalta. E porque pode interessar a mais alguém fica aqui o programa que também pode servir a nível didáctico para quem não souber trabalhar com estas funções e procedimentos menos vulgares. Program Altera_Data_Hora_Ficheiros; Uses CRT, DOS; Var F: File; FTime: Longint; DirInfo: SearchRec; { For Windows, use TSearchRec } File_DT, DT2CHG: DateTime; bFile_DT:array[1..6] of Boolean; i: integer; Procedure Ajuda; begin Writeln; Writeln('Programa: CHG_DT.EXE - 7/Maio/2012 - @Pedro Estima'); Writeln('Permite alterar a data e/ou hora de ficheiro(s) e directoria(s)'); Writeln; Writeln('CHG_DT [Ficheiro]'); Writeln('CHG_DT [WildCards]'); Writeln; end; Procedure Inicializa; Function Valor(opcao:string):word; const esc=#27; var op:char; v:word; begin Write('Deseja alterar ',opcao,' [s/N]: '); repeat op:=upcase(readkey); until op in [esc,'N','S']; if op=esc then halt; write(op); if op='S' then begin bFile_DT[i]:=True; write(' Insira valor para ',opcao,': '); readln(v); valor:=v; end else begin bFile_DT[i]:=False; valor:=0; writeln; end; i:=i+1; end; begin Writeln; i:=1; DT2CHG.Year:=Valor('Ano'); DT2CHG.Month:=Valor('Mes'); DT2CHG.Day:=Valor('Dia'); DT2CHG.Hour:=Valor('Hora'); DT2CHG.Min:=Valor('Minutos'); DT2CHG.Sec:=Valor('Segundos'); end; {Fim Inicializa} begin if ParamCount=0 then Ajuda else begin Inicializa; FindFirst(paramstr(1), AnyFile, DirInfo); while DosError = 0 do begin Write('Ficheiro: ',DirInfo.Name); Assign(f, DirInfo.Name); reset(f); GetFTime(f,ftime); UnpackTime(FTime,File_DT); if bFile_DT[1] then File_DT.Year:=DT2CHG.Year; if bFile_DT[2] then File_DT.Month:=DT2CHG.Month; if bFile_DT[3] then File_DT.Day:=DT2CHG.Day; if bFile_DT[4] then File_DT.Hour:=DT2CHG.Hour; if bFile_DT[5] then File_DT.Min:=DT2CHG.Min; if bFile_DT[6] then File_DT.Sec:=DT2CHG.Sec; PackTime(File_DT,FTime); SetFtime(f,ftime); gotoxy(wherex+5,wherey); writeln('OK'); close(f); FindNext(DirInfo); end; end; end. Estejam à vontade para comentar, melhorar, etc.
nunopicado Posted May 8, 2012 at 10:53 AM Report #453736 Posted May 8, 2012 at 10:53 AM Duvida: Não seria melhor alterares os dados EXIF, e não a data/hora do ficheiro? "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
nunopicado Posted May 8, 2012 at 02:01 PM Report #453814 Posted May 8, 2012 at 02:01 PM Tópico dividido: O desafio do membro Pedro-Kun de criar um programa para editar a data via EXIF continua aqui: Mudar Data/Hora de captura de uma foto (EXIF) "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted May 8, 2012 at 02:52 PM Report #453838 Posted May 8, 2012 at 02:52 PM Seja como for, acho que está aqui um excelente snippet - na Wiki Knowledge is free!
nunopicado Posted May 8, 2012 at 03:55 PM Report #453860 Posted May 8, 2012 at 03:55 PM Seja como for, acho que está aqui um excelente snippet - na Wiki Sim, não houve demérito do passarito. Para o efeito a que ele se propôs, está impecável. A ideia do EXIF foi só mesmo por se tratar de imagens/fotografias (pois é, fotógrafo na área 🙂😄 :D). "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
passarito Posted May 8, 2012 at 04:38 PM Author Report #453885 Posted May 8, 2012 at 04:38 PM Sim, não houve demérito do passarito. Para o efeito a que ele se propôs, está impecável. @Nunopicado, não quero "puxar a brasa à minha sardinha", mas o meu objectivo não eram as fotos propriamente distas, mas sim qualquer ficheiro. Apenas dei o exemplo das fotos porque foi o caso concreto! Ainda ssim vou acompanhar esse desafio! Não sei o que aconteceu, mas a minha resposta foi parar ao outro tópico... ainda assim transcrevo-a para aqui: Nem conhecia essa especificação EXIF, já andei a ler qualquer coisa, mas nada em concreto. No fim-de-semana dedicar-me-ei a esse assunto com máquina. Penso que isso será na máquina que isso é configurado, não? No entanto, para a finalidade que eu queria resultou. É simplesmente alterar data/hora do ficheiro, quer em imagem, como outro qualquer! Até de pastas ele altera! Quis foi aprimorar o programa um pouco mais 🙂 Já dei uma olhada melhor a esse EXIF, e já sei do que estão a falar! 😁
nunopicado Posted May 8, 2012 at 04:41 PM Report #453886 Posted May 8, 2012 at 04:41 PM @Nunopicado, não quero "puxar a brasa à minha sardinha", mas o meu objectivo não eram as fotos propriamente distas, mas sim qualquer ficheiro. Apenas dei o exemplo das fotos porque foi o caso concreto! Ainda ssim vou acompanhar esse desafio! Fica à vontade, puxa a brasa para a tua sardinha... Pessoalmente prefiro umas costeletas de novilho! 🙂😄 "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted May 8, 2012 at 07:04 PM Report #453928 Posted May 8, 2012 at 07:04 PM Não sei o que aconteceu, mas a minha resposta foi parar ao outro tópico... Aconteceu isto... Tópico dividido: O desafio do membro Pedro-Kun de criar um programa para editar a data via EXIF continua aqui: Mudar Data/Hora de captura de uma foto (EXIF) ... e a tua mensagem foi atrás da sardinha. 😉 Knowledge is free!
nunopicado Posted May 8, 2012 at 07:35 PM Report #453932 Posted May 8, 2012 at 07:35 PM ... e a tua mensagem foi atrás da sardinha. 😄 😄 Acho que foi ver se encontrava as costeletas... hehehe Eu pelo menos já as encontrei e estão muito boas! Estão servidos? Não? Porquê? 😉 "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now