Как Windows реши кой от двата файла с еднакви печати време е по-нова?
Какво означава, когато имате два еднакви файла с идентични времеви печати, но Windows казва, че един файл е по-нов от другия? Как може да бъде? Днешната публикация за въпроси и отговори на SuperUser помага на объркан читател да реши тайната на печата на времето.
Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.
Въпроса
Четецът на SuperUser WBT иска да знае как Windows решава кой от двата файла с идентични времеви маркировки е по-нов:
Когато Windows покаже диалогов прозорец като този с подходящите времеви печати, как определя кой от двата файла е по-нов?
Първоначално мислех, че Windows сравнява атрибута „Създаване на дата“ и използва резултата от това сравнение за етикетиране на едно или друго като по-ново. Ако даден файл е копиран в определено място, той може да има дата на създаване, когато копието е направено, а не датата на създаване на оригиналния файл. Въпреки това, след като го възпроизведете с друг файл, резултатът от който е по-нов изглежда е обратното:
Резултатът е един и същ дали копирането или преместването на файла:
А за фон, файлът в test2 е направено преди това копие на файла в test1.
Как Windows решава кой от двата файла с идентични времеви печати е по-нов?
Отговорът
Граубитът на сътрудника на SuperUser има отговор за нас:
Времевите печати в файловата система NTFS имат разделителна способност от 100 наносекунди (0.0000001 s). Дори ако диалоговият прозорец със свойства показва същата закръглена стойност, все пак е възможно файловете да са създадени в рамките на десети от секундата на всяка друга..
Забележка: Повечето файлови системи измерват време в μs или ns. FAT32 е малко на реликт и закръглява времевите метки до две секунди.
Изпробвайте един от следните методи, за да сравните пълните времеви печати:
- wmic datafile където име = "c: foo ".txt" последно се модифицира
Чрез PowerShell:
- (Get-ChildItem c: foo.txt) .LastWriteTime.ToString (“o”)
Имате ли какво да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.
Кредит за изображението: WBT (суперпотребител)