日安,
我使用松下摄录机录制视频,并使用手闸将*.AVCHD文件压缩为*.mp4文件。为了存档目的,我需要将原始文件时间戳(创建日期和时间)复制到编码的*.mp4文件中。*.AVCHD文件位于test1文件夹中,*.mp4文件位于test2文件夹中。除了文件结尾外,文件名是相等的。
我试图修改这个(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抱怨找不到文件属性。接下来我要做什么?
谢谢你的帮助,克里斯蒂安
发布于 2018-02-22 10:35:43
问题是$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
}
}发布于 2018-02-22 10:33:54
将行$files = gci $AVCHD | % {$_.Name}更改为$files = gci $AVCHD并尝试。
通过将$files声明为$files = gci $AVCHD | % {$_.Name},$files基本上只存储文件夹中文件的名称,而不存储其他任何内容。它不包含任何其他属性,因此您无法使用它。
尝试将$files = gci $AVCHD.改为$files现在,$files将包含您所需的所有文件属性,您将能够根据需要使用它。
https://stackoverflow.com/questions/48924676
复制相似问题