两个不同时间的文件和文件夹的差异(Windows)

两个不同时间的文件和文件夹的差异(Windows)

我想查看有多少文件和文件夹已被更改(包括创建、删除和修改),已更改文件和文件夹的列表及其尺寸之前和之后。

那么是否存在一个实用工具(或脚本?)可以在两个不同的时间运行然后获取差异?

答案1

使用 PowerShell,组合一些 cmdlet 并不太困难。

  • Get-ChildItem将文件夹/文件树放入对象中,
  • 用于Export-Clixml/Import-Clixml将对象存储在文件中
    (xml 文件会占用一些空间),
  • 并将Compare-Object最新的与当前树进行比较。

## Q:\Test\2018\12\17\SU_1385185.ps1
$Base = 'C:\Test\'
$ArchiveFolder = $Env:tmp

function Archive-Tree {
    $File = "{0}\Tree_{1:yyyyMMddHHmmss}.CliXML" -f $ArchiveFolder,[datetime]::Now
    Get-ChildItem -Path $Base -Recurse | Export-Clixml $File
    $File
}

## ----- get most recent file Tree_*.clixml
$File = Get-ChildItem "$($Env:tmp)\Tree_*.Clixml" | Select-Object -Last 1
if ($File){
    $Old = Import-Clixml $File
    $New = Import-Clixml (Archive-Tree)
    Compare-Object -Ref $Old -Dif $New -Property FullName,
            Length,LastWriteTime,CreationTime,LastAccessTime |
        Sort-Object FullName,SideIndicator | Format-Table -AutoSize
} else {
    $File = (Archive-Tree)
    "No saved tree, now created as {0}" -f $File
}

示例输出

FullName              Length LastWriteTime       CreationTime        LastAccessTime      SideIndicator
--------              ------ -------------       ------------        --------------      -------------
C:\test\c_test.clixml 982258 2018-12-17 12:59:27 2018-12-17 12:59:24 2018-12-17 12:59:24 =>
C:\test\c_test.clixml      0 2018-12-17 12:59:24 2018-12-17 12:59:24 2018-12-17 12:59:24 <=
C:\Test\foo.baz         1164 2018-12-17 13:55:05 2018-12-17 13:55:21 2018-12-17 13:55:21 =>

引用SideIndicator <=LHS 或 -ReferenceObject ( $OLD),
引用SideIndicator =>RHS 或 -DifferenceObject ( $New)。

相关内容