美好的一天,
我使用Panasonic摄像机录制视频,并使用HANDBRAKE将* .AVCHD文件压缩为* .mp4文件。出于存档目的,我需要将原始文件时间戳(创建日期和时间)复制到编码的* .mp4文件中。 * .AVCHD文件位于文件夹test2中的文件夹test1和* .mp4文件中。除文件结尾外,文件名相同。
我尝试修改此内容(how to use powershell to copy file and retain original timestamp 解决我的需求但失败了:
$AVCHD = 'test1'
$MP4 = 'test2'
$files = gci $AVCHD | % {$_.Name}
ForEach ($AVCHD_file in $files) {
$MP4_file.Name = $AVCHD_file.BaseName + ".mp4"
$MP4_file.CreationTime = $AVCHD_file.CreationTime
$MP4_file.LastAccessTime = $AVCHD_file.LastAccessTime
$MP4_file.LastWriteTime = $AVCHD_file.LastWriteTime
}
Powershell抱怨无法找到文件属性。接下来我要做什么?
感谢您的帮助, 基督教
答案 0 :(得分:0)
将行$files = gci $AVCHD | % {$_.Name}
更改为$files = gci $AVCHD
并尝试。
通过将$files
声明为$files = gci $AVCHD | % {$_.Name}
,$files
基本上只存储文件夹中文件的名称而不存储任何其他内容。它不包含任何其他属性,因此您无法使用它。
尝试将$files
更改为 $files = gci $AVCHD
。现在$files
将包含您所需的所有文件属性,您可以根据需要使用它。
答案 1 :(得分:0)
问题是$MP4_file
不是对象,因此没有要设置的属性或属性。
获取FileInfo对象的简单方法是使用gci并根据源文件的basename构建合适的路径。像这样,
ForEach ($AVCHD_file in $files) {
$MP4_file = gci $("$MP4\{0}.mp4" -f $AVCHD_file.basename)
if (test-path $MP4_file ) {
# Attribute set goes here
}
}