Копирование метаданных файловой системы (modifyDate и т. д.) из одного файла в другой

Копирование метаданных файловой системы (modifyDate и т. д.) из одного файла в другой

Я повторно конвертирую свои старые файлы и использую следующий код для копирования метаданных из старого файла в новый:

for %%f in (*.mp4) do ffmpeg -i "%%f" -i "%%~nf_1.mp4" -map 1 -c copy -map_metadata 0 -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a "%%~nf_.mp4"

Однако это не копирует метаданные файловой системы, такие как дата изменения. Есть ли способ скопировать эти метаданные? Есть предложения?

Спасибо.

P.S. У меня Windows 10.

решение1

Метаданные, которые копирует ffmpeg, — это данные, связанные с видео. Дата изменения — это атрибут файла, управляемый Windows, но не ffmpeg.

Если вы преобразовали файлы из папки C:\dirsourceв папку D:\dirtarget, то следующий скрипт PowerShell скопирует измененную дату из источника в цель:

Get-ChildItem "C:\dirtarget\" *.mp4 | ForEach-Object {
    $_.LastWriteTime = (Get-Item ("C:\dirsource\"+$_.Name)).LastWriteTime
}

То же самое можно сделать с атрибутами CreationTimeи LastAccessTime.

Создайте файл с именем myname.ps1и скопируйте в него текст выше. Запустите сеанс PowerShell, используйте cdдля указания папки, содержащей скрипт, затем выполните команду .\myname.ps1.

Если вы получили сообщение об ошибке «Невозможно загрузить, так как выполнение скриптов отключено в этой системе», выполните следующую команду в окне PowerShell, а затем повторите вышеуказанные действия:

   Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted 

Связанный контент