Główna » jak » W jaki sposób Windows decyduje, który z dwóch plików z identycznymi znacznikami czasu jest nowszy?

    W jaki sposób Windows decyduje, który z dwóch plików z identycznymi znacznikami czasu jest nowszy?

    Co to znaczy, gdy masz dwa identyczne pliki z identycznymi znacznikami czasu, ale Windows mówi, że jeden plik jest nowszy od drugiego? Jak to możliwe? Dzisiejszy post pytań i odpowiedzi dla SuperUser pomaga zagmatwanemu czytelnikowi rozwiązać zagadkę czasu.

    Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupowania witryn z pytaniami i odpowiedziami.

    Pytanie

    Czytnik SuperUser WBT chce wiedzieć, jak Windows decyduje, który z dwóch plików z identycznymi znacznikami czasu jest nowszy:

    Gdy system Windows wyświetla takie okno dialogowe z pasującymi znacznikami czasu, w jaki sposób określa, który z tych dwóch plików jest nowszy?

    Najpierw myślałem, że system Windows porównuje datę utworzenia atrybutu i używa wyniku tego porównania do oznaczenia jednej lub drugiej jako nowszej. Jeśli plik został skopiowany do określonej lokalizacji, może mieć datę utworzenia kopii, a nie datę utworzenia oryginalnego pliku. Jednak po odtworzeniu go z innym plikiem wynik, z którego jeden jest nowszy, wydaje się być odwrotny:

    Wynik jest taki sam, niezależnie od tego, czy kopiujesz, czy przenosisz plik:

    A dla tła plik w teście2 jest poprzednio utworzoną kopią pliku w teście 1.

    W jaki sposób system Windows decyduje, który z dwóch plików z identycznymi znacznikami czasu jest nowszy?

    Odpowiedź

    Nadawca SuperUser ma dla nas odpowiedź:

    Znaczniki czasu w systemie plików NTFS mają rozdzielczość 100 nanosekund (0.0000001 s). Nawet jeśli okno dialogowe właściwości pokazuje tę samą zaokrągloną wartość, możliwe, że pliki zostały utworzone w ciągu dziesiętnych sekund od siebie.

    Uwaga: Większość systemów plików mierzy czasy w μs lub ns. FAT32 to trochę reliktu i zaokrągla znaczniki czasu do dwóch sekund.

    Wypróbuj jedną z następujących metod porównywania pełnych znaczników czasu:

    • wmic datafile gdzie name = "c: \\ foo \\ bar.txt" zostaje zmodyfikowane

    Przez PowerShell:

    • (Get-ChildItem c: \ foo \ bar.txt) .LastWriteTime.ToString ("o")

    Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.

    Image Credit: WBT (SuperUser)