在Windows 10中使用CSV数据修改多个视频的创建日期的属性?

问题描述

我真的不知道哪种方法最适合。 Powershell可能就是我想要的...

我看到了这个:need to change file created date based on csv(4年前)

,想知道它是否仍然有用。

我有一堆.mp4文件,它们在Windows 10中具有随机date created属性

我还有一个excel电子表格/ csv文件,该文件的顺序是我要重新命名文件的顺序,因此第一行是第一视频,第二行是第二视频(按正确的顺序)。 / p>

所以我想知道是否可以使用powershell根据该csv文件文件的(行)索引来重新命名文件。日期从2019年11月15日开始,从那时起所有视频均相隔1天。

csv文件中的文件名以正确的顺序排列,并且在mp4文件夹中具有完全相同的名称。但是,它们不会以任何方式排序。

CSV文件 包含按创建日期顺序排列的文件

video1
video2
video3
...

MP4文件夹之前

name    date created

video1  dd/mm/yyyy
video2  dd/mm/yyyy
video3  dd/mm/yyyy
...     ...        <---- dates here are all messed up

MP4文件夹: 我到底想要什么

name    date created

video1  15/11/2019
video2  16/11/2019
video3  17/11/2019
...     ...        <---- more files (same number as in csv file)

根据您对问题的了解,随意更改此问题的内容

谢谢!

解决方法

假设:

A)您的所有文件都在同一文件夹中 或B)您在CSV文件中拥有完整路径

AND C)您的csv文件头称为 filename

$csvfile = 'Path\to\csvfile.csv'
$startdate = Get-Date 11/15/2019

Set-Location Path\to\videofiles

Import-Csv $csvfile | ForEach-Object {

    #set creationtime
    (Get-Item $_.filename).CreationTime = $startdate

    #increase date by one day
    $startdate = $startdate.AddDays(1)
}
,

@Doug Maurer提供的答案不完整(没有用),因此这是可行的解决方案:

$csvfile = 'path/to/csvfile.csv'
$startdate = [datetime]::ParseExact('15/11/2019','dd/MM/yyyy',$null) 

Set-Location 'path/to/folder'

Import-Csv $csvfile | ForEach-Object {

    #set creationtime
    (Get-Item $_.filename).CreationTime = $startdate

    #increase date by one day
    $startdate = $startdate.AddDays(1)
}