powerShell:复制文件属性( *.avchd = creation.编码 *.mp4的时间)



美好的一天,

我使用松下摄像机录制视频,并使用Handbrake将 *.avchd文件压缩为 *.mp4文件。为了归档目的,我需要将原始文件时间戳(创建日期和时间(复制到编码 *.mp4文件。*.AVCHD文件位于文件夹Test2中的文件夹Test1和 *.mp4文件中。文件名等于文件结尾。

我尝试修改此(如何使用PowerShell复制文件并保留原始时间戳(解决我的需求,但失败了:

$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抱怨找不到文件属性。接下来我要做什么?

谢谢您的帮助,基督徒

问题是$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
    }
}

将行$files = gci $AVCHD | % {$_.Name}更改为 $files = gci $AVCHD并尝试。

通过将$files声明为$files = gci $AVCHD | % {$_.Name}$files基本上仅存储文件的名称,而没有其他内容。它不包含其他属性,因此您无法使用它。

尝试将$files更改为 $files = gci $AVCHD 。现在$files将包含您所有必需的文件属性,您将能够根据要求使用它。

最新更新