Stellen Sie mit Powershell das Erstellungsdatum einer Datei auf das einer anderen Datei ein

3

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.

Joost
quelle
Thx @ ƬᴇcƬᴇιʜ007, funktioniert wie ein Traum
Joost

Antworten:

3

Beispiel für einen Powershell-Befehl zum Abrufen des Erstellungsdatums der Datei:

(Get-ChildItem c:\path\yourFile.txt).CreationTime

Beispiel für einen Powershell-Befehl zum Festlegen des Erstellungsdatums der Datei:

(Get-ChildItem c:\path\yourFile.txt).CreationTime = '01/01/1900 12:42AM'

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 %2der Pfad / Name der neuen Datei und der Pfad / Name %1der alten Datei enthalten sind. :)

ƬᴇcƬᴇιʜ007
quelle