使用 Powershell 将文件的创建日期设置为另一个文件的创建日期

Joo*_*ost 5 powershell ffmpeg command-line

有人能帮我把这条线弄对吗?

powershell Set-ItemProperty -LiteralPath '[NewVideo]' -Name CreationTimeUtc -Value ('[CreationTimeOfOldVideo]' -as [Datetime])
Run Code Online (Sandbox Code Playgroud)

我试图将视频文件旋转 90 度,同时保留原始文件的创建日期。我已经找到了使用 ffmpeg 进行旋转的方法,但是我在尝试将创建日期复制到新文件时遇到了困难。搜索使我得出结论,使用 powershell 应该是可能的(我对此几乎一无所知)

这是我到目前为止:

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])
Run Code Online (Sandbox Code Playgroud)

谢天谢地,这是从这个论坛的另一个用户那里复制的。问题出在最后一行。%3 变量是旧文件的 cmd 日期 ($~tI),通常是 LastModifiedDate,而不是 CreationDate。我需要 powershell 将新文件的创建日期设置为与旧文件的创建日期相同。我对 [oldfile].CreationTimeUTC 做了一些试验,但无济于事。

非常感谢帮助。

Ƭᴇc*_*007 5

获取文件创建日期的示例 Powershell 命令:

(Get-ChildItem c:\path\yourFile.txt).CreationTime
Run Code Online (Sandbox Code Playgroud)

设置文件创建日期的示例 Powershell 命令:

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

因此,作为要在现有脚本中按原样使用的单行(而不是最后一行),请尝试以下操作:

powershell (Get-ChildItem '%2').CreationTime = (Get-ChildItem '%1').CreationTime

这会将新文件 (%2) 的创建时间设置为旧文件 (%1) 的创建时间。

这假定%2包含新文件的路径/名称并%1包含旧文件的路径/名称。:)