Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как установить время создания файла с точностью до миллисекунды?

Ответить
Настройки темы
[решено] Как установить время создания файла с точностью до миллисекунды?

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!

Для чтения/установки времени создания файла/папки есть функции FileGetTime и FileSetTime, они "работают" с точностью до секунд.

Подскажите, пожалуйста, есть ли возможность узнать/установить время создания с точностью до миллисекунды?

Отправлено: 19:40, 12-05-2011

 

Пользователь


Сообщения: 86
Благодарности: 2

Профиль | Отправить PM | Цитировать


эта информацыя не хронится. то есть нельзя.

Отправлено: 11:55, 13-05-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Эта информация хранится, это точно. По крайней мере для файловой системы NTFS.
Это можно видеть (и изменять) в последней версии Far Manager.
Так же есть специальная консольная утилита, которая позволяет это делать.

Раз это возможно для других программ, то наверное как-то можно сделать и средствами AutoIt.

Вопрос - как?

Отправлено: 14:15, 13-05-2011 | #3


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


_Date_Time_SetFileTime()
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:10, 14-05-2011 | #4


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


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
Но таким образом я могу работать только с ФАЙЛАМИ.

Подскажите, пожалуйста, как можно сделать то же самое для ПАПКИ?

Отправлено: 20:15, 14-05-2011 | #5


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Папки нужно открывать с флагом FILE_FLAG_BACKUP_SEMANTICS, но _WinAPI_CreateFile() его не поддерживает. Используйте _WinAPI_CreateFileEx() из библиотеки WinAPIEx.au3:

Для папок:

Код: Выделить весь код
$hFile = _WinAPI_CreateFileEx(@ScriptDir & '\myTestFolder', $OPEN_EXISTING, 0, 0, $FILE_FLAG_BACKUP_SEMANTICS)
Для файлов:

Код: Выделить весь код
$hFile = _WinAPI_CreateFileEx(@ScriptDir & '\myTestFile.txt', $OPEN_EXISTING, 0, 0)

Последний раз редактировалось Yashied, 15-05-2011 в 02:32.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:38, 14-05-2011 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как установить время создания файла с точностью до миллисекунды?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Системное время с точностью до секунд из bat BugSoft Скриптовые языки администрирования Windows 1 15-12-2008 16:55
ALTLinux - Как наложить на JPG текст (дата создания файла) user51 Общий по Linux 6 30-06-2008 15:37
Время создания файла Alexey1974 Microsoft Windows NT/2000/2003 0 09-04-2007 20:28
Как взять дату создания файла из перла? radioamator Вебмастеру 2 30-04-2004 11:14
Как изменить время создания папки bilytur Хочу все знать 20 19-09-2003 16:11




 
Переход