На моем телефоне Android он был настроен на сохранение картинок в память телефона.
Я хотел освободить память в телефоне, и, поскольку у меня есть карта на 16 ГБ с интерфейсом USB, я:
1) скопировал все картинки на мой компьютер с помощью USB-кабеля.
2) стерли файлы изображений (и эскизы) из памяти телефона.
3) настроил телефон для сохранения картинок на карту uSD.
4) скопировал все картинки с компьютера на карту uSD на телефоне.
Теперь все работает, за исключением того, что метка времени (и порядок сортировки) для всех изображений на телефоне (uSD) теперь все испорчены ... показывая дату / время, когда я выполнил операцию копирования.
К счастью, метки времени для картинок на компьютере верны.
Я думал написать скрипт, используя PowerShell (или комбинацию Batch/PowerShell) для:
1) для каждого файла изображения, который существует как в телефоне, так и на компьютере ...
2) читать метки времени (создание и изменение) из файла на компьютере
3) установить временные метки для файла на карте памяти телефона
Пути что-то вроде:
Телефон: "K:\DCIM\100Media"
Компьютер: "F:\Android\SDCard\DCIM\100Media"
То, что я нашел до сих пор о PowerShell, я мог бы сделать:
$timestampw = (Get-ChildItem 'F:\Android\SDCard\DCIM\100Media\file1.jpg').LastWriteTime
$timestampc = (Get-ChildItem 'F:\Android\SDCard\DCIM\100Media\file1.jpg').CreationTime
(Get-ChildItem 'K:\DCIM\100Media\file1.jpg').LastWriteTime = $timestampw
(Get-ChildItem 'K:\DCIM\100Media\file1.jpg').CreationTime = $timestampc
Мне все еще нужна информация о:
1) неясно определить, когда мне следует использовать «Get-ChildItem» против «Get-Item»
2) проверьте, существует ли файл на телефоне.
3) как передать пути / имена файлов в скрипт PowerShell.
4) как обращаться к аргументам командной строки в скрипте PowerShell.
I could also use this in PowerShell to loop through all the files on the computer:
$files = Get-ChildItem 'F:\Android\SDCard\DCIM\100Media'
ForEach ($file in $files) ...
5) как обернуть все это и создать файл сценария PowerShell
В качестве альтернативы тому, чтобы делать это полностью в PowerShell, я мог бы написать командный файл для вызова PowerShell (командной строки) дважды для каждого файла:
@echo off
set "sp=F:\Android\SDCard\DCIM\100Media"
set "dp=K:\DCIM\100Media"
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
Чтобы это работало, мне просто нужно знать, как составлять командные строки для вызова PowerShell.
Очевидно, что метод Batch/PowerShell будет проще завершить, но для дальнейшего понимания PowerShell было бы замечательно увидеть и то, и другое.
Кроме того, возможно ли прочитать метку времени создания из метаданных файла изображения с помощью PowerShell?
Спасибо всем, кто может оказать некоторую помощь.