更改文件夹的“修改日期”(可能是在 powershell 中)

更改文件夹的“修改日期”(可能是在 powershell 中)

有时,当我强制关闭 Windows Server 2003 计算机时(我别无选择),某个目录中包含的文件夹都会将其“修改日期”更改为当前日期。

幸运的是,每个文件夹中的文件都具有正确的“修改日期”。

我想要复制“修改(或创建)日期”的其中一个文件是每个文件夹内都有的 .jdf 文件。

我需要帮助在 PowerSell 中创建脚本。

我发现这个 PS1 脚本几乎可以完成这个工作:

Get-ChildItem $root | Where-Object {$_.PSIsContainer} | Foreach-Object{

# get the oldest file for the current directory object
$oldest = Get-ChildItem $_.FullName | Sort-Object LastWriteTime | Select-Object LastWriteTime -Last 1

if($oldest)
{
# oldest object found, set current directory LastWriteTime
$_ | Set-ItemProperty -Name CreationTime -Value $oldest.LastWriteTime 
$_ | Set-ItemProperty -Name LastWriteTime -Value $oldest.LastWriteTime
}
else
{
# current directory is empty, directory LastWriteTime is left unchanged
Write-Warning "Directory '$($_.FullName)' is empty, skiping..."
}
}

问题是文件夹内的最后修改对象有时是子文件夹,其也将当前日期作为“修改日期”。我怎样才能让它看起来像文件夹内的文件而不是文件夹?

答案1

尝试这个:

Get-ChildItem $root |
    Where-Object { $_.PSIsContainer } |
Foreach-Object{
    
    $oldest = Get-ChildItem $_.FullName |
        Where-Object { ! $_.PSIsContainer } |
            Sort-Object LastWriteTime |
    Select-Object -Last 1

    if($oldest)
    {
        $_ | Set-ItemProperty -Name CreationTime -Value $oldest.LastWriteTime 
        $_ | Set-ItemProperty -Name LastWriteTime -Value $oldest.LastWriteTime
    }
    else
    {
        # current directory is empty, directory LastWriteTime is left unchanged
        Write-Warning "Directory '$($_.FullName)' is empty, skiping..."
    }
}

答案2

Get-ChildItem $root -directory结果与

Get-ChildItem $root | Where-Object {$_.PSIsContainer}

你可以尝试(我不知道PS详细的语法)

Get-ChildItem $root -file

甚至

gci $root -file

不确定你的脚本剩余部分是否需要改进......

相关内容