首页 > 解决方案 > 如何使用 Powershell 比较 Last.Write.Time

问题描述

我想编写将文件合并到一个的脚本,如果它们稍后被修改,那么应该是一个目标。我的脚本如下所示:

Function UnifyConfigs { param ( $destination = "C:\temp\all.txt", [Parameter()] $files )

foreach ($config in $files) {
    If((Get-ChildItem $config ).LastWriteTime -gt (Get-Item $destination).LastWriteTime)
    {
        Clear-Content -path $destination
        Set-Content -path $destination -value (Get-Content $config) 
    }
    else {
        break
    }  
}
}

我的主要问题是 $destination 文件总是被修改。据我了解,仅当 $config 的修改日期大于 $destination 的修改日期时才应更改它。但是现在,每次我运行脚本时它都会被覆盖。怎么了?

标签: powershell

解决方案


$destinationparam如您的块中定义的那样是一个字符串-您需要解析文件系统提供程序中的相应项目以获取该LastWriteTime值-此处使用Get-Item

if((Get-Item $config).LastWriteTime -gt (Get-Item $destination).LastWriteTime)
{
    # ...
}

推荐阅读