|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Вставка диапазона дат в текстовый файл |
|
[решено] Вставка диапазона дат в текстовый файл
|
Новый участник Сообщения: 17 |
Всем привет. Помогите реализовать следующий финт.
Есть текстовый файл. VERSION 2 BITMAP 2,50 1,75 1,50 2,00 "Логотип.bmp" TEXT 10 5,25 4,25 "Интервал исследования: 23.06.12 0:00 - 24.06.12 0:00" clBlack TEXT 10 2,25 5,25 "Страна: Россия" clBlack И вот как-бы так настроить чтобы менять дату автоматом, например при запуске скрипта 25.06.2012, чтобы он проставлял 25.06.12 0:00 - 26.06.12 0:00 и т.д. Может кто помочь? Вероятно можно обойтись и без аутоит? |
|
Отправлено: 21:23, 24-06-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать irk72ag, для начала укажите потребную кодировку текстового файла.
|
Отправлено: 22:04, 24-06-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать 1251 вроде как. Я не большой спец. В обычном виндовом блокноте открывается. В просмотрщике от тотал коммандера кажет анси и 1251.
Пардон если кого насмешил своими познаниями. ![]() |
Последний раз редактировалось irk72ag, 24-06-2012 в 22:51. Причина: 1251 Отправлено: 22:50, 24-06-2012 | #3 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать irk72ag,
Попробуйте примерно так. #include <Date.au3> $sFile = @ScriptDir & '\test.txt' $sReplace = @MDAY & '.' & @MON & '.' & StringRight(@YEAR, 2) & ' 0:00 - ' & StringRegExpReplace(_DateAdd('D', 1, @YEAR & '/' & @MON & '/' & @MDAY), '^\d{2}(\d{2})/(\d{2})/(\d{2}).*$', '$3.$2.$1 0:00') $iCode = FileGetEncoding($sFile) $hFile = FileOpen($sFile, $iCode) If $hFile = -1 Then Exit -33 $sText = FileRead($hFile) FileClose($hFile) $sText = StringRegExpReplace($sText, '(?s)^(.*?)\d{2}\.\d{2}\.\d{2}\s0:00\s-\s\d{2}\.\d{2}\.\d{2}\s0:00(.*?)$', '${1}' & $sReplace & '$2') If @extended <> 2 Then Exit -44 $hFile = FileOpen($sFile, $iCode + 2) If $hFile = -1 Then Exit -55 FileWrite($hFile, $sText) FileClose($hFile) |
Последний раз редактировалось madmasles, 24-06-2012 в 23:12. Отправлено: 23:07, 24-06-2012 | #4 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Спасибо! Работает. Сейчас буду адаптировать и применять на практике.
Наш девиз - меньше ненужных телодвижений. ![]() Есть вопрос, как правильно прописать, если нужно менять дату не в одном файле а сразу в нескольких? Я, конечно сделал по топорному, просто продублировав скрипт для второго файла, но может можно элегантнее? И еще вопрос, если не трудно подскажите где и что подправить, если мне нужно будет получить другое смещение времени? К примеру мне еще нужно при запуске 25.06.12, чтобы дата прописалась 24.06.12 0:00 - 25.06.12 0:00 |
|
Последний раз редактировалось irk72ag, 25-06-2012 в 00:07. Отправлено: 23:50, 24-06-2012 | #5 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать irk72ag,
Попробуйте так, особо не тестировал. #include <Date.au3> Dim $aFileName[4] = [3, 'test.txt', '1_test.txt', '2_test.txt'], $sDir = @ScriptDir, $iOffsetDays = 5 For $i = 1 To $aFileName[0] $iCode = FileGetEncoding($sDir & '\' & $aFileName[$i]) $hFile = FileOpen($sDir & '\' & $aFileName[$i], $iCode) If $hFile = -1 Then ContinueLoop $sText = FileRead($hFile) FileClose($hFile) _ReplaceDatePeriod($sText, $iOffsetDays) If @error Then ContinueLoop $hFile = FileOpen($sDir & '\' & $aFileName[$i], $iCode + 2) If $hFile = -1 Then ContinueLoop FileWrite($hFile, $sText) FileClose($hFile) Next Func _ReplaceDatePeriod(ByRef $s_Text, $i_OffsetDays = 0) Local $s_Start, $s_Start_1, $s_Replace If Not StringRegExp($s_Text, '\d{2}\.\d{2}\.\d{2}\s0:00\s-\s\d{2}\.\d{2}\.\d{2}\s0:00') Then Return SetError(1) $i_OffsetDays = Int($i_OffsetDays) If $i_OffsetDays Then $s_Start = _DateAdd('D', $i_OffsetDays, @YEAR & '/' & @MON & '/' & @MDAY) $s_Start_1 = StringRegExpReplace($s_Start, '^\d{2}(\d{2})/(\d{2})/(\d{2}).*$', '$3.$2.$1 0:00 - ') Else $s_Start = @YEAR & '/' & @MON & '/' & @MDAY $s_Start_1 = @MDAY & '.' & @MON & '.' & StringRight(@YEAR, 2) & ' 0:00 - ' EndIf $s_Replace = $s_Start_1 & StringRegExpReplace(_DateAdd('D', 1, $s_Start), '^\d{2}(\d{2})/(\d{2})/(\d{2}).*$', '$3.$2.$1 0:00') $s_Text = StringRegExpReplace($s_Text, '(?s)^(.*?)\d{2}\.\d{2}\.\d{2}\s0:00\s-\s\d{2}\.\d{2}\.\d{2}\s0:00(.*?)$', '${1}' & $s_Replace & '$2') EndFunc ;==>_ReplaceDatePeriod |
Последний раз редактировалось madmasles, 25-06-2012 в 00:53. Отправлено: 00:45, 25-06-2012 | #6 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Как все сложно.
![]() А что насчет: И еще вопрос, если не трудно подскажите где и что подправить, если мне нужно будет получить другое смещение времени? К примеру мне еще нужно при запуске 25.06.12, чтобы дата прописалась 24.06.12 0:00 - 25.06.12 0:00 ну т.е. как первый код, только для другого смещения дат. |
Отправлено: 16:01, 25-06-2012 | #7 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Цитата irk72ag:
|
|
Отправлено: 23:55, 25-06-2012 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Изменить текстовый файл | PoltavaPGS | Скриптовые языки администрирования Windows | 5 | 26-10-2011 16:56 | |
VBS/WSH/JS - Экспорт значений реестра в общий текстовый файл + добавление доп данных в этот файл | fedko | Скриптовые языки администрирования Windows | 0 | 17-06-2010 11:52 | |
Чем открыть текстовый файл dat | Jurbell | Хочу все знать | 6 | 05-07-2007 14:59 | |
Как прочитать на JavaScript текстовый файл? | Efremov | Вебмастеру | 5 | 11-01-2006 11:27 | |
mySQL или текстовый файл | chem1 | Программирование и базы данных | 12 | 02-02-2004 03:56 |
|