#powershell #date #ffmpeg
Вопрос:
Поэтому я хочу начать с этого ffmpeg, и powershell на самом деле не является моей сильной стороной, но я использовал следующую команду powershell для преобразования каждого .файл flac в определенном каталоге в файл 320K.
dir *.flac | foreach {ffmpeg -i $_.FullName -c:v copy -b:a 320k $_.FullName.Replace('flac', 'mp3')}
Это работает именно так, как я хочу, без перекодирования обложек альбомов, но я хочу включить способ, чтобы создаваемые новые файлы .mp3 имели ОДИНАКОВОЕ значение ИЗМЕНЕНИЯ ДАТЫ .файлы flac. Возможно ли вообще что-то подобное?
audio_ex.flac = Date Modification: 1/1/2010
audio_ex.mp3 = Date Modification: 9/8/2021
должно быть, вместо этого
audio_ex.flac = Date Modification: 1/1/2010
audio_ex.mp3 = Date Modification: 1/1/2010
У меня есть папка с 6 тысячами файлов, и я хочу, чтобы каждая исходная дата была изменена в соответствии с вновь созданными файлами, поэтому, если я смогу выполнить вышеуказанную команду, а также сопоставить дату и время в течение одного выполнения, это было бы идеально.
Я думал о том, чтобы вручную изменять каждый мод файлов с помощью сторонних инструментов, но это займет слишком много времени.
Комментарии:
1. Вы можете полностью исключить ffmpeg из этого вопроса, потому что это чисто вопрос powershell. ffmpeg не может установить дату изменения. Это на уровне операционной системы.
Ответ №1:
Попробуйте выполнить следующее (обратите внимание, что псевдонимы были расширены до их базовых имен командлетов).:
Get-ChildItem -Filter *.flac | ForEach-Object {
$outFile = $_.FullName -replace '.flac
, '.mp3'
ffmpeg -i $_.FullName -c:v copy -b:a 320k $outFile
(Get-Item -LiteralPath $outFile).LastWriteTime = $_.LastWriteTime
}