Powershell 将文件LastWriteTime设置为其他文件的上次写入时间

Powershell 将文件LastWriteTime设置为其他文件的上次写入时间,powershell,Powershell,我的文件夹中有大约一年前处理过的700000个文件,所以它们的最近写入时间都是从/mm/dd/2016开始的。由于输出文件中的图像更新,我们不得不再次重新处理所有这些文件。这些文件位于两个单独的目录中,但具有完全相同的文件名 我的最终用户希望我更新所有新处理的文件,以将LastWriteTime更改为旧处理的文件所具有的时间。这是出于历史搜索的目的 我想使用Powershell扫描新文件夹($dest)并更新新文件LastWriteTime以匹配旧文件LastWriteTime。我的powers

我的文件夹中有大约一年前处理过的700000个文件,所以它们的最近写入时间都是从/mm/dd/2016开始的。由于输出文件中的图像更新,我们不得不再次重新处理所有这些文件。这些文件位于两个单独的目录中,但具有完全相同的文件名

我的最终用户希望我更新所有新处理的文件,以将LastWriteTime更改为旧处理的文件所具有的时间。这是出于历史搜索的目的

我想使用Powershell扫描新文件夹($dest)并更新新文件LastWriteTime以匹配旧文件LastWriteTime。我的powershell已经生锈了,我被卡住了,过不去,希望能得到一位大师的帮助

这是我开始开发的代码块

$src = "C:\Users\UserName\Desktop\old"
$dest = "C:\Users\UserName\Desktop\new"

Get-ChildItem -Path $src -Filter *.pdf -Recurse | ForEach-Object {

    $nextName = Join-Path -Path $dest -ChildPath $_.name

   if (Test-Path -LiteralPath $nextName) 
    {
       Set-Item $dest.LastWriteTime = $src.LastWriteTime 
    }

}

一旦递归到子文件夹中,您的方法就无法工作。
试试这个(未经测试)


(获取项目“D:\Path\newfile.txt”).LastWriteTime=(获取项目“D:\Path\oldfile.txt”).LastWriteTime
谢谢Bill,看起来是我一直在寻找的解决方案。文件是否已经存在于
\new
中?如果不是,还有一种比你现在做的更有效的方法,它似乎是为正确的文件获取一个随机日期,而不是最后的写入时间日期。它们确实存在于/new中,并且具有完全相同的文件名。
$src  = "C:\Users\UserName\Desktop\old"
$dest = "C:\Users\UserName\Desktop\new"

Get-ChildItem -Path $src -Filter *.pdf -Recurse | ForEach-Object {
    $NewFullName = $_.Fullname -replace [RegEx]::Escape($src),$dest
    if (Test-Path -LiteralPath $NewFullName) {
       (Get-Item $NewFullName).LastWriteTime = $_.LastWriteTime
    }
}