Powershell 如何使用.csv数据修改多个文件的“创建日期”属性?

Powershell 如何使用.csv数据修改多个文件的“创建日期”属性?,powershell,file,attributes,windows-10-desktop,Powershell,File,Attributes,Windows 10 Desktop,我不知道该如何表达我的问题,因为这不是我熟悉的事情, 但Powershell可能是我需要使用的 我看到这个:(4年前) 我想知道我怎样才能把这个应用到我的问题上 我在文件夹videos中有许多.mp4文件的创建日期属性不正确 我还有一个.csv文件,按时间顺序(使用相应的文件名)列出视频中的所有文件 第一个文件从2019年11月15日开始,每个连续视频在前一个文件之后1天创建 powershell如何帮助我使用.csv文件中的文件行修改每个文件的创建日期属性 CSV文件:包含按时间顺序排列的文件

我不知道该如何表达我的问题,因为这不是我熟悉的事情, 但Powershell可能是我需要使用的

我看到这个:(4年前)

我想知道我怎样才能把这个应用到我的问题上

我在文件夹
videos
中有许多
.mp4
文件的
创建日期属性不正确

我还有一个
.csv
文件,按时间顺序(使用相应的文件名)列出
视频中的所有文件

第一个文件从2019年11月15日开始,每个连续视频在前一个文件之后1天创建

powershell如何帮助我使用
.csv
文件中的文件行修改每个文件的
创建日期
属性

CSV文件:包含按时间顺序排列的文件名

视频文件夹:

name    date created

video1  dd/mm/yyyy
video2  dd/mm/yyyy
video3  dd/mm/yyyy
...     ...        <---- dates are incorrect
name    date created

video1  15/11/2019
video2  16/11/2019
video3  17/11/2019
...     ...        <---- dates are in chronological order according to .csv file
name创建日期
视频1日/月/年
视频2年月日
视频3年月日
...     ...         假设:

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

C)您的csv文件头称为文件名

$csvfile='Path\to\csvfile.csv'
$startdate=获取日期2019年11月15日
将位置路径\设置为\视频文件
导入Csv$csvfile | ForEach对象{
#设置creationtime
(获取项目$\文件名)。CreationTime=$startdate
#将日期增加一天
$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)
}

谢谢你,道格!我现在还不会使用您的解决方案,我还需要再获取一些文件,但是在修改之前,我是否需要首先从所有文件中删除错误的
创建日期
属性?或者你的解决方案会解决这个问题吗?它会改变它。最后一件事,是基于文件名的搜索?(csv中的文件名与文件夹中的文件名完全相同)。因此:索引0:将在文件夹中查找
video1
,并更新其属性,然后索引1:将在文件夹中查找
video2
,并更新其属性等?这不是搜索。它将引用csv中列出的每个文件的名称。每个文件名都将使用
$\文件名
$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)
}