Я повторно конвертирую свои старые файлы и использую следующий код для копирования метаданных из старого файла в новый:
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