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

Показать сообщение отдельно

Аватара для madmasles

Ветеран


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

Профиль | Отправить 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