Статьи из блога

Статьи из блога

Как изменить дату создания документа

Рубрика: Программы, Вопрос-Ответ, Макросы
Метки: |
Среда, 27 августа 2008 г.
Просмотров: 86052
Подписаться на комментарии по RSS
Версия для печати

[Ссылки на статью]

Этот вопрос однажды мне задал один человек, но я не смог найти на него ответа. Позже, мне прислали ссылку то ли на специальную программу, то ли на программное решение. Не могу сейчас вспомнить, да это и не важно.

 

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

Но можно воспользоваться двумя способами изменения даты создания или изменения документа (да, и любого файла).

 

Первый способ - программный на VB. Это решение я нашел на сайте Microsoft в статье Как принудительно изменить атрибут файла. Код привожу ниже:

Option Explicit
' функции преобразования формата даты
Private Declare Function SystemTimeToFileTime& Lib "kernel32" (lpSystemTIME As SYSTEMTIME, lpFileTime As FILETIME)
Private Declare Function FileTimeToSystemTime& Lib "kernel32" (lpFileTime As FILETIME, lpSystemTIME As SYSTEMTIME)
' функции работы с файлами
Private Declare Function lopen& Lib "kernel32" Alias "_lopen" (ByVal lpFileName As String, ByVal wReadWhite As Long)
Private Declare Function lclose& Lib "kernel32" Alias "_lclose" (ByVal hFile As Long)
Private Declare Function SetFileTime& Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME)
' функция для анализа ошибок
Private Declare Function GetLastError& Lib "kernel32" ()
' для хранения даты во внутреннем формате
Private Type FILETIME
  dwLowDateTime As Long
  dwHighDateTime As Long
End Type
' для хранения даты в системном формате
Private Type SYSTEMTIME
  wYear As Integer
  wMonth As Integer
  wDayOfWeek As Integer
  wDay As Integer
  wHour As Integer
  wMinute As Integer
  wSecond As Integer
  wMilliseconds As Integer
End Type
Private Sub Form_Load()
  Dim SysTime As SYSTEMTIME, NowTime As FILETIME
  Dim FileName$, handleF&, wReadWrite&, k&, k1&
  ' дата в системном формате
  SysTime.wYear = 2008
  SysTime.wMonth = 6
  SysTime.wDay = 9
  SysTime.wHour = 7
  SysTime.wMinute = 18
  SysTime.wSecond = 24
  ' преобразование даты во внутренний двоичный формат
  k& = SystemTimeToFileTime(SysTime, NowTime)
  '
  ' имя файла - он должен существовать
  FileName$ = "C:\d.txt"	'это пример - Вы можете изменить на путь к свому файлу
  
  ' Работа с файлами только средствами функций API
  ' ВНИМАНИЕ! Для изменения атрибутов файла,
  ' он должен  быть открыт в режиме "разрешения
  ' записи", например:  режим "чтение-запись"
  ' Const OF_READWRITE& = 2
  wReadWrite& = 2
  ' Открытие файла
  handleF& = lopen&(FileName$, wReadWrite&)
  ' запись новых атрибутов даты
  k& = SetFileTime&(handleF&, NowTime, NowTime, NowTime)
  ' была ли ошибка? Можно проверить
  k1& = GetLastError ' код ошибки
  ' закрытие файла
  Call lclose(handleF&)
End Sub

Второй способ - использование специальных программ. Например, программы SetFileDate.

 

Программа изменения даты создания файла

 

С помощью этой программки можно изменить как дату (и время) создания файла, так и дату его изменения или последнего открытия. Простая программа, с интуитивно понятным интерфейсом.

 

Может быть, кто-то из читателей сайта знает другие способы изменения атрибутов документа, кроме описанных в заметке?

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 33

  1. My.Own.Word
    27.08.2008 в 13:45 | #1

    Мне кажется, что для таких операций больше подойдет файловый менеджер, например DISCo Commander (http://www.disco.ru/_files/dc53.exe).

    Там эта операция выполняется очень удобно: File - File Attributes:

    http://i34.tinypic.com/jfarlj.png

  2. сергей
    27.08.2008 в 16:17 | #2

    В Total Commander очень просто изменяются атрибуты файла: в меню Файл-Изменить атрибуты и все...

  3. mirage
    29.08.2008 в 08:19 | #3

    На vb писать макросы неудобно, а пользоваться спец. софтом для этого лучше имхо, потому что меньше проблем с кодировкой символов, имхо.

  4. Олеся
    01.09.2008 в 01:19 | #4

    А зачем менять дату документа?

  5. Екатерина
    28.11.2008 в 18:06 | #5

    Можно создать новый документ и скопировать в него весь текст из ворда.

  6. DAN@POCHTA.RU
    18.12.2008 в 10:32 | #6

    Спасибо!

    А если таких документов 5000! что по одному открывать?, а после тотал коммндера инфа о создателе-владельце файла все равно остается.

  7. MensoN
    01.06.2009 в 12:49 | #7

    Total не меняет дату создания, он меняет строку "изменен"!!!!!!!

  8. Станислав
    05.01.2010 в 23:21 | #8

    В любом случае, насколько мне известно, понятия "дата создания файла" и "дата создания документа" понятия разные. Первое обеспечивается средствами файловой системы, и именно здесь Far, TimeStmp by J.Berkes и подобные программы могут помочь, второе является атрибутом документа, который хранится в самом содержимом файла, обеспечивается структурой .doc, и временные штампы ставит уже непосредственно Word.

    По-крайней мере, в формате word 2003 это так. docx, тот что из word 2007, вообще сделан в виде xml-структуры, из этого могу сделать предположение, что время хранится в чём-то наподобие meta-данных, так же в самом файле.

  9. stranger_jack@mail
    04.02.2010 в 19:29 | #9

    А как изменить в MS Excel именно дату создания документа?

    Внешними средствами (изменение системной даты, утилиты типа SetFileDate и т.п.) это сделать не удается. А надо.

  10. Аноним
    06.02.2010 в 23:36 | #10

    как изменить дату в программе "компас"? подскажите пожалуйста!

  11. Сергей
    13.02.2010 в 23:27 | #11

    to stranger_jack

    с Excel не работаю давно, пользуюсь OpenOffice. В нём в диалоге свойств файла (Файл-Свойства) на первой закладке есть кнопка Сбросить - устанавливает текущее время и дату в качестве времени и даты создания документа. Пробуйте! Но не забудьте поменять и время изменения файла той же SetFileDate - это время хранится в файловой системе в отличие от даты создания документа, хранящейся внутри файла. Изменяя одно, не меняешь другое.

  12. Semen
    24.02.2010 в 01:06 | #12

    подскажите пожалуйста как изменить даты создания таблиц/запросов/форм/отчётов в акцессе (оччень много связей и тд и тп) =(

  13. Евгений
    02.05.2010 в 14:10 | #13

    TotalCommander меняет обе даты: дату создания и модификации документа!

  14. Илья
    03.10.2010 в 17:23 | #14

    В FAR`e - Ctrl+a и меняйте

  15. 18.10.2011 в 20:41 | #15

    Все не так просто как кажется, Например в программе Компас изменить дату создания модели я не знаю как

    Сохранить как, или изменение имени файла тут не помогает.

    Если посмотреть в вкладку Файл->Информация о документе. Там все равно будет написано, реальное время создания файла.

  16. Mustang98rus
    08.11.2011 в 22:46 | #16

    А не вариант поменять дату на компе, отключить инет, создать новый файл, копировать всё со старого и перенести в новый? И вот Вам документ с любой датой.

    А как например вместо даты поставить надпись "Давно" или "А какая раздница? =)"

  17. Аноним
    12.12.2011 в 09:57 | #17

    Эта программа меняет дату во вкладке "общие", но в "сводке" в подробной информации дата не меняется.

  18. салют
    21.12.2011 в 16:24 | #18

    Делайте через Total Commander, файлы-изменить атрибуты-проставить дату и время как будет вам угодно, программа усе сделает и будете довольны. Проверено! Рекомендую.

  19. alexey
    25.12.2011 в 18:42 | #19

    изменить системную дату (часы снизу справа) на компьютере и пересохранить документ с новой датой

  20. Олег
    08.04.2012 в 20:36 | #20

    Как раз только что поменял "дату/время создания файла" Total Commander'ом.

    Постоянно пользовался Total Commander'ом для изменения "даты/времени изменения файла".

    Но вот настоятельно понадобилось поменять "дату/время создания файла". Google'ом наткнулся на эту страницу, а в первых комментариях - на упоминание всё того же Total Commander'а.

    Через Меню выполняете Файлы>Изменитьатрибуты...

    В появившемся окне среднее поле отвечает за изменение "даты/времени изменения файла".

    В следующем (нижнем) поле можно установить/изменить множество других атрибутов, среди которых "дата/время создания файла": кнопка Добавить атрибут и далее выбираете или устанавливаете, что Вам нужно в появившихся полях.

    Написано для Total Commander 7.04a PowerPack 2.99.

  21. Коля
    21.05.2012 в 05:12 | #21

    Пусть сейчас 21.05.2012 год.

    Устанавливаем в Винде дату 06.09.2000, создаем файл .doc, вносим изменения и сохраняем файл. В результате все времена: создания содержимого, изменения содержимого, создания файла и его изменения будут 06.09.2000. Теперь, если поставить 2001 год, и скопировать файл, то времена создания и изменения содержимиого останутся 06.09.2000, а времена создания и изменения файла станут 06.09.2001.

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

  22. Аноним
    22.05.2012 в 21:54 | #22

    программа SetFileDate изменяет только дату создания файла, но в свойствах файла в вкладке подробно не изменяется дата создания текста и дату последнего изменения файла. Как изменить ?

  23. Аноним
    22.05.2012 в 21:59 | #23

    если найдете то скинте на почту mixa150rus@yandex.ru

  24. Zorrohalk
    05.06.2012 в 12:33 | #24

    Уважаемые, просто используйте для этой цели старый добрый FAR manager , можно одновременно изменить все три параметра у сколько угодно файлов.

  25. Аноним
    08.06.2012 в 15:57 | #25

    Чтобы изменить ДАТУ СОЗДАНИЯ ФАЙЛА, просто сделайте копию его и все, а подлинник удалить)))), после копию переименовать как был подлиник!!!

  26. Екатерина
    30.10.2012 в 18:58 | #26

    Как изменить дату сохдания СОДЕРЖИМОГО????

  27. Екатерина
    30.10.2012 в 18:59 | #27

    Извините, т.е СОЗДАНИЯ)))

  28. Анна
    30.10.2012 в 19:00 | #28

    Подскажите пожалуйста как изменить дату СОЗДАНИЯ СОДЕРЖИМОГО в Экселе????

  29. Игорь
    17.06.2013 в 17:44 | #29

    Тотал Cоmmander меняет и дату создания и дату редактирования НО при копировании файла на флеху или пересылке по почте файлы автоматом сбрасываются на реальную дату создания! Будьте осторожны

  30. Аноним
    26.06.2013 в 06:26 | #30

    как изменить дату в программе Waymeter

  31. Alex
    09.12.2013 в 12:03 | #31

    В файлах docx дата создания меняется так:

    открываем тотал коммандер желательно из последних версий

    встаем на файле который нам нужен изменить, жмем Ctrl+PageDown

    откроется содержимое данного файла-архива

    идем в папку: docProps и находим файл core.xml, жмем F4 и редактируем поле

    2013-10-17T16:41:00Z

    вставляем нашу дату, время высчитывается от UTC(то есть от европейского, для москвы это +3 или +4 в зависимости от времени года(лето или зима).

    Закрываем блокнот, спросит сохранить, отвечаем да. Далее тотал запакует все это дело и открываем уже наш документ вордом. Проверяем дату создания на вкладке файл самого ворда.

    Перед манипуляциями с файлом, ЖЕЛАТЕЛЬНО сделать КОПИЮ его!

    Удачи!

  32. Гость
    25.05.2014 в 22:33 | #32

    Если это презентация: в вкладке файл - подробности - поиск проблем - инспектор документов. Проведите проверку, будет найден автор или скрытые атрибуты, жмите "удалить все". После этого создание даты содержимого меняется на вашу сегодняшнюю, которую можно подправить почти любым файловым менеджером. Удачи!

  33. hotel
    12.06.2015 в 18:00 | #33

    брависимо - все реально рабтат

Оставьте комментарий!

(обязательно)

^ Наверх