Grishanenko
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Через bat делаю упаковку каждого отдельного файла из директории в отдельный CAB архив. Полный текст батника приводить не буду, т.к. сейчас это не важно. Нашел только 2 программки для упаковки: Код: cabarc -m LZX:21 N %fname:~0,-1%_ %fname% makecab.exe %fname% | Но обе они выставляют у архива текущую дату, а хотелось бы получить совпадение с датой создания файла. Встроенной возможности сделать это не вижу. Пришлось извращаться. Нашел 2 утилитки, которые позволяют получить дату создания файла С СЕКУНДАМИ: Код: forfiles -musbhub.sys -c"cmd /c echo @FTIME" 45102 stat.exe -c=%y usbhub.sys =2007-02-17 06:51:02.000000000 +0200 | Т.е. одна выдает время в GMT, а вторая - в GMT+2 Можно подумать что GMT+2 это установка системы. Но нет. Похоже что часовой пояс прописан в файле, т.к. есть вот такие файлы: Код: forfiles -mhidparse.sys -c"cmd /c echo @FTIME" 10148 stat.exe -c=%y hidparse.sys =2013-07-03 04:01:48.000000000 +0300 | Нашел 2 утилитки, которые могут установить время создания файла. Код: FileTouch.exe /W /A /C /D 01-02-2023 /T 04:01:48 hidparse.sys nircmd.exe setfiletime hidparse.sys "01-02-2023 04:01:48" "01-02-2023 04:01:48" | Обе программы выставляют время, но сбрасывают часовой пояс на текущий: Код: stat.exe -c=%y hidparse.sys =2023-01-02 04:01:48.000000000 +0200 forfiles -mhidparse.sys -c"cmd /c echo @FTIME" 20148 | Из-за этого время на архиве и внутри него гуляет на 1-2 часа. Вроде, мелочь, но интересно было бы сравнять их. Вижу только 2 возможности: 1. Основываясь на часовом поясе, который отображает stat, менять системный часовой пояс или время и лишь после этого устанавливать время создания. Должно сработать, но мне кажется что вылезут проблемы с другими программами, которые в этот момент могут сохранять файлы. 2. Вычислять разность между часовым поясом файла и системным и корректировать устанавливаемое время. Но это уже полное извращение, т.к. если время файла около полуночи, то может понадобиться потом переводить дни, месяцы и годы. Находил еще способы получения времени с секундами через PowerShell, WMIC и VBS. Как там обстоят дела - не знаю. Для меня это уже сложновато. Может есть более простые способы как через bat считать, а потом записать дату и время создания файла? |