Kann mir jemand helfen, diese Zeile richtig zu machen?
powershell Set-ItemProperty -LiteralPath '[NewVideo]' -Name CreationTimeUtc -Value ('[CreationTimeOfOldVideo]' -as [Datetime])
Ich versuche, Videodateien um 90 Grad zu drehen, wobei das Erstellungsdatum der Originaldatei erhalten bleibt. Ich habe den Weg gefunden, die Rotation mit ffmpeg durchzuführen, versuche aber nicht, das Erstellungsdatum in die neue Datei zu kopieren. Eine Suche brachte mich zu dem Schluss, dass es mit Powershell möglich sein sollte (von dem ich kaum etwas weiß)
Das habe ich bisher:
FOR /r %%I in (*.avi, *.mp4) DO CALL :loopbody "%%~fI" "%%~dpnI_%%~xI" "%%~tI"
GOTO :EOF
:loopbody
ffmpeg -i %1 -c:v libx264 -crf 18 -maxrate 4000k -bufsize 4000k -c:a libvo_aacenc -q:a 100 -map_metadata 0 -preset veryslow -tune film -movflags +faststart %2
powershell Set-ItemProperty -LiteralPath '%2' -Name CreationTimeUtc -Value ('%3' -as [Datetime])
Welches wurde zum Glück von einem anderen Benutzer in diesem Forum kopiert. Das Problem liegt in der letzten Zeile. Die Variable% 3 ist das Cmd-Datum ($ ~ tI) der alten Datei, normalerweise das LastModifiedDate, nicht das CreationDate. Ich benötige Powershell, um das Erstellungsdatum der neuen Datei mit dem Erstellungsdatum der alten Datei identisch zu machen. Ich habe einige Experimente mit [oldfile] .CreationTimeUTC durchgeführt, ohne Erfolg.
Hilfe wird sehr geschätzt.
quelle
Antworten:
Beispiel für einen Powershell-Befehl zum Abrufen des Erstellungsdatums der Datei:
Beispiel für einen Powershell-Befehl zum Festlegen des Erstellungsdatums der Datei:
Versuchen Sie als Einzeiler, der im vorhandenen Skript unverändert (anstelle der letzten Zeile) verwendet werden soll, Folgendes:
powershell (Get-ChildItem '%2').CreationTime = (Get-ChildItem '%1').CreationTime
Dadurch wird die Erstellungszeit der neuen Datei (% 2) auf die Erstellungszeit der alten Datei (% 1) festgelegt.
Dies setzt voraus, dass
%2
der Pfad / Name der neuen Datei und der Pfad / Name%1
der alten Datei enthalten sind. :)quelle