Войти

Показать полную графическую версию : Изменение времени строк в текстовом файле на определенную величину


RadioSys
31-07-2012, 11:01
Добрый день!

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

Пример файла:


17.07.2012 00:19:00 ""
17.07.2012 00:52:00 ""
17.07.2012 01:19:00 ""
17.07.2012 01:52:00 ""
17.07.2012 02:19:00 ""
17.07.2012 02:52:00 ""
17.07.2012 03:19:00 ""
17.07.2012 03:52:00 ""
17.07.2012 04:19:00 ""
17.07.2012 04:52:00 ""
и т. д. до 24 часов


Необходимо увеличить время на четыре часа:


17.07.2012 04:19:00 ""
17.07.2012 04:52:00 ""
17.07.2012 05:19:00 ""
17.07.2012 05:52:00 ""
17.07.2012 06:19:00 ""
17.07.2012 06:52:00 ""
17.07.2012 07:19:00 ""
17.07.2012 07:52:00 ""
17.07.2012 08:19:00 ""
17.07.2012 08:52:00 ""

и т. д.


Форматы файлов неизменны, кодировка неизменна (CP1251).

Заранее спасибо.

DmitriiV
31-07-2012, 12:21
Пример для обработки одной строки:

strTemp = "17.07.2012 20:52:00 """""
arrTemp = Split(strTemp, ":00")
strTemp = DateAdd("h", 4, arrTemp(0))
WScript.Echo FormatDateTime(strTemp, 2) & " " & FormatDateTime(strTemp, 4) & ":00" & arrTemp(1)

С файловыми операциями и циклом самостоятельно управитесь?

RadioSys
31-07-2012, 12:38
Спасибо большое!

Самостоятельно не управлюсь :-(. Только учусь.

DmitriiV
31-07-2012, 15:23
Например, так:

Dim objFS, objFile, arrData, arrTemp, strTemp
strPath = "D:\Temp\log.txt"
Set objFS = CreateObject("Scripting.FileSystemObject")
If objFS.FileExists(strPath) Then
Set objFile = objFS.OpenTextFile(strPath, 1)
arrData = Split(objFile.ReadAll, vbNewLine)
objFile.Close
For i = 0 To UBound(arrData)
If Len(arrData(i)) > 0 Then
If InStr(arrData(i), ":00") > 0 Then
arrTemp = Split(arrData(i), ":00")
strTemp = DateAdd("h", 4, arrTemp(0))
arrData(i) = FormatDateTime(strTemp, 2) & " " & FormatDateTime(strTemp, 4) & ":00" & arrTemp(1)
End If
End If
Next
Set objFile = objFS.OpenTextFile(strPath, 2, True)
For i = 0 To UBound(arrData)
objFile.WriteLine arrData(i)
Next
Erase arrData
objFile.Close
Set objFile = Nothing
WScript.Echo "Готово."
Else
WScript.Echo "Не найден путь " & strPath
End If
Set objFS = Nothing
WScript.Quit 0

RadioSys
31-07-2012, 15:43
Спасибо большое!

Работает!!!! Буду разбирать построчно и "мотать на ус".

NoIZz
31-07-2012, 17:10
Было бы неплохо увидеть это в комманд-шелле

Iska
31-07-2012, 20:22
Было бы неплохо увидеть это в комманд-шелле »
Зачем?




© OSzone.net 2001-2012