Мне нужно обновить время создания фиктивного файла до «сейчас», удалив его и воссоздав заново. Как ни странно, вновь созданный файл выглядит так, как будто он наследует время создания исходного файла!
Позвольте мне продемонстрировать:
> touch a.txt //create a new file
> dir /T:C //creation time
02/27/2013 02:04 PM 0 a.txt
> dir /T:W //modification time
02/27/2013 02:04 PM 0 a.txt
//wait a bit...
> touch a.txt //update modified-time
> dir /T:C
02/27/2013 02:04 PM 0 a.txt
> dir /T:W //mod-time changed, as expected
02/27/2013 02:05 PM 0 a.txt
> del a.txt
> touch a.txt //recreate file
> dir /T:C //same original ctime !!
02/27/2013 02:04 PM 0 a.txt
> dir /T:W //the actual time the 2nd file was created
02/27/2013 02:06 PM 0 a.txt
> del a.txt
> touch b.txt //ok, create a file with a different name
> dir /T:C //ctime as expected
02/27/2013 02:07 PM 0 b.txt
> mv b.txt a.txt
> dir /T:C //again, ctime of original file!
02/27/2013 02:04 PM 0 a.txt
> del a.txt
> touch c.txt //create a file with a different name, again
> dir /T:C //ctime as expected
02/27/2013 02:08 PM 0 c.txt
> cp c.txt a.txt //this time copy it...
> dir /T:C //ctime of a.txt is that of original file!
02/27/2013 02:04 PM 0 a.txt
02/27/2013 02:08 PM 0 c.txt
//wait longer...
> del *
> touch d.txt
> dir /T:C
02/27/2013 02:22 PM 0 d.txt
> cp d.txt a.txt
> dir /T:C //lo and behold, the ctime has changed.
02/27/2013 02:22 PM 0 a.txt
02/27/2013 02:22 PM 0 d.txt
На этом моя демонстрация заканчивается. Возникают два вопроса:
^^^ Что он сказал.
Как я могу это исправить?
Хорошо, позвольте мне остановиться на них:
Кто-нибудь знает, какая внутренняя механика ОС Windows / NTFS играет? Похоже, что происходит кэширование некоторых метаданных файла, и аннулирование кэша ограничено по времени.
Любые предложения о том, как я могу получить совершенно новый файл с тем же именем, что и оригинал, с обновленным
ctime
? Приветствуются любые предложения, будь то пакетные скрипты, взломы реестра, программные или что-нибудь еще.