No meu telefone Android, ele foi configurado para salvar fotos na memória do telefone.
Eu queria liberar alguma memória no telefone e, como tenho um cartão SD de 16 GB, eu:
1) copiou todas as imagens para o meu computador usando o cabo USB.
2) apagou os arquivos de imagem (e miniaturas) da memória do telefone.
3) configurou o telefone para salvar fotos no cartão usS.
4) copiou todas as fotos do computador para o cartão usb no telefone.
Tudo está funcionando agora, exceto pelo fato de que o registro de data e hora (e ordem de classificação) de todas as imagens no telefone (uSD) agora estão todas estragadas ... mostrando a data / hora em que realizei a operação de cópia.
Felizmente, os registros de data e hora das imagens no computador estão corretos.
Eu estava pensando em escrever um script usando o PowerShell (ou uma combinação de Lote / PowerShell) para:
1) para cada arquivo de imagem existente no telefone e no computador ...
2) leia os timestamps (criação e modificação) do arquivo no computador |
3) defina os timestamps para o arquivo no cartão de memória do telefone
Os caminhos são algo como:
Telefone: "K: \ DCIM \ 100Media"
Computador: "F: \ Android \ SDCard \ DCIM \ 100Media"
O que eu descobri até agora sobre o PowerShell, eu poderia fazer:
$timestampw = (Get-ChildItem 'F:\Android\SDCard\DCIM0Media\file1.jpg').LastWriteTime
$timestampc = (Get-ChildItem 'F:\Android\SDCard\DCIM0Media\file1.jpg').CreationTime
(Get-ChildItem 'K:\DCIM0Media\file1.jpg').LastWriteTime = $timestampw
(Get-ChildItem 'K:\DCIM0Media\file1.jpg').CreationTime = $timestampc
Ainda preciso de informações sobre:
1) não está claro determinar quando devo usar "Get-ChildItem" vs. "Get-Item"
2) verifique se o arquivo existe no telefone.
3) como passar os caminhos / nomes de arquivos para o script do PowerShell.
4) como se referir aos argumentos da linha de comando no script do PowerShell.
I could also use this in PowerShell to loop through all the files on the computer:
$files = Get-ChildItem 'F:\Android\SDCard\DCIM0Media'
ForEach ($file in $files) ...
5) como agrupar tudo isso e criar um arquivo de script do PowerShell
Como uma alternativa para fazer isso inteiramente no PowerShell, eu poderia escrever um arquivo em lotes para chamar o PowerShell (linha de comando) duas vezes para cada arquivo:
@echo off
set "sp=F:\Android\SDCard\DCIM0Media"
set "dp=K:\DCIM0Media"
cd "%sp%"
cd "%dp%"
F:
for %%f in ("*.jpg") do call :work "%%f"
goto :EOF
:work
set fn=%~1
set "ss=%sp%\%fn%"
set "ds=%dp%\%fn%"
if not exist "%ds%" goto :EOF
call PowerShell ... 'copy LastWriteTime from "%ss%" to "%ds%"
call PowerShell ... 'copy CreationTime from "%ss%" to "%ds%"
goto :EOF
Para que isso funcione, eu só preciso saber como compor as linhas de comando para chamar o PowerShell.
Obviamente, o método Batch / PowerShell seria mais fácil de concluir, mas para uma melhor compreensão do PowerShell, seria ótimo ver ambos.
Além disso, é possível ler o timestamp de criação dos metadados do arquivo de imagem usando o PowerShell?
Obrigado a todos que podem ajudar.