Показать полную графическую версию : [решено] Как установить время создания файла с точностью до миллисекунды?
Добрый день!
Для чтения/установки времени создания файла/папки есть функции FileGetTime и FileSetTime, они "работают" с точностью до секунд.
Подскажите, пожалуйста, есть ли возможность узнать/установить время создания с точностью до миллисекунды?
andr_mozg
13-05-2011, 11:55
эта информацыя не хронится. то есть нельзя.
Эта информация хранится, это точно. По крайней мере для файловой системы NTFS.
Это можно видеть (и изменять) в последней версии Far Manager.
Так же есть специальная консольная утилита, которая позволяет это делать.
Раз это возможно для других программ, то наверное как-то можно сделать и средствами AutoIt.
Вопрос - как?
Yashied
Я как раз копал в этом направлении. Что у меня получилось:
Установить время создания файла с точностью до миллисекунды (для файловой системы NTFS):
#include <Date.au3>
_Main()
Func _Main()
Local $hFile, $tFile, $aTime
; открываем существующий или создаем новый тестовый файл
$hFile = _WinAPI_CreateFile(@ScriptDir & "\myTestFile.txt", 3)
if $hFile = 0 then _WinAPI_ShowError("Unable to create file")
; устанавливаем время с точностью до миллисекунды (для файловой системы NTFS)
$tFile = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC, 123)
$pFile = DllStructGetPtr($tFile)
_Date_Time_SetFileTime($hFile, $pFile)
_WinAPI_CloseHandle($hFile)
EndFunc ;==>_Main
Прочитать время создания файла с точностью до миллисекунды (для файловой системы NTFS):
#include <Date.au3>
_Main()
Func _Main()
Local $hFile, $tFile, $aTime, $aDate, $val
; открываем существующий тестовый файл
$hFile = _WinAPI_CreateFile(@ScriptDir & "\myTestFile.txt", 2)
if $hFile = 0 then _WinAPI_ShowError("Unable to create file")
; читаем время создания, модификации и последнего доступа к файлу
$aTime = _Date_Time_GetFileTime($hFile)
_WinAPI_CloseHandle($hFile)
; выводим время Создания файла с точностью до миллисекунды
$aDate = _Date_Time_FileTimeToArray($aTime[0])
$val = StringFormat("%04d/%02d/%02d %02d:%02d:%02d,%03d", $aDate[2], $aDate[1], $aDate[0], $aDate[3], $aDate[4], $aDate[5], $aDate[6])
MsgBox (0, "", "Created ..: " & $val)
EndFunc ;==>_Main
Но таким образом я могу работать только с ФАЙЛАМИ.
Подскажите, пожалуйста, как можно сделать то же самое для ПАПКИ?
Папки нужно открывать с флагом FILE_FLAG_BACKUP_SEMANTICS, но _WinAPI_CreateFile() его не поддерживает. Используйте _WinAPI_CreateFileEx() из библиотеки WinAPIEx.au3 (http://autoit-script.ru/index.php?topic=47.0):
Для папок:
$hFile = _WinAPI_CreateFileEx(@ScriptDir & '\myTestFolder', $OPEN_EXISTING, 0, 0, $FILE_FLAG_BACKUP_SEMANTICS)
Для файлов:
$hFile = _WinAPI_CreateFileEx(@ScriptDir & '\myTestFile.txt', $OPEN_EXISTING, 0, 0)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.