Różnica w plikach i folderach w dwóch różnych momentach (Windows)

0

Chciałbym zobaczyć, ile plików i folderów zostało zmienionych (w tym utworzonych, usuniętych i zmodyfikowanych), listę zmienionych plików i folderów z ich rozmiar przed i po.

Czy istnieje narzędzie narzędziowe (lub skrypt?), Które mogę uruchomić w dwóch różnych momentach, a następnie uzyskać różnicę?

OrangeSpider
źródło
Jest to bardzo specyficzna prośba, więc nie musimy korzystać z gotowego narzędzia. Będziesz musiał sam to napisać. Więc wyszukuj za pomocą swojej ulubionej wyszukiwarki dla każdego segmentu przypadku użycia, zbuduj skrypt, a następnie przetestuj go, a jeśli masz problemy, wróć do nas z kodem i błędami. Wystarczy wyszukać zarządzanie plikami i folderami PowerShell, a także monitorowanie plików i folderów. Wiele z nich znajduje się również w plikach pomocy w systemie. Po prostu spójrz na Get-ChildItem, aby zacząć.
postanote
@postanote dzięki za komentarz. Jestem otwarty także na narzędzia, które nie obejmują wszystkich aspektów, o których wspomniałem ...
OrangeSpider
Możesz użyć Treesize. Pozwala zapisać migawkę plików w systemie w danym momencie i porównać to do migawki z innego czasu.
Lieven Keersmaekers

Odpowiedzi:

0

Z PowerShell nie jest trudno po prostu połączyć kilka poleceń cmdlet.

  • Get-ChildItem aby umieścić drzewo folderów / plików w obiekcie,
  • za pomocą Export-Clixml/Import-Clixml aby zapisać obiekt w pliku
    (pliki xml zajmą trochę miejsca),
  • i Compare-Object aby porównać najnowsze z aktualnym drzewem.

## 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
}

Przykładowe wyjście

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 =>

The SideIndicator <= odwołuje się do LHS lub -ReferenceObject ( $OLD ),
SideIndicator => RHS lub -DifferenceObject ( $New ).

LotPings
źródło