CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Аватара пользователя
galclerik

CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение galclerik »

Всем привет! Есть файл в котором есть много строк формата:



02|56873727|20131207011347|тексттексттекст

02|56873727|20131207011347|тексттексттекст

02|56873727|20131207011347|тексттексттекст (где 2013-год,12-месяц,07-число и 01-час,13-минут,47-секунд)



нужно чтобы батник находил в каждой строке время: 011347 и заменялего на случайное. т.е. задать маски с диапозонами чисел для формирования времени: ([0-2] [0-4]-часы, [0-5] [0-9]-минуты, [0-5] [0-9]-секунды ) .

чтобы в итоге получилось:

02|56873727|20131207134523|тексттексттекст

02|56873727|20131207013515|тексттексттекст

02|56873727|20131207232755|тексттексттекст



Готов отблагодарить финансово!



Спасибо!
Аватара пользователя
Iska

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение Iska »

galclerik, образец файла из нескольких строк выложите (нужно опознать кодировку).


Цитата galclerik:



([0-2] [0-4]-часы, [0-5] [0-9]-минуты, [0-5] [0-9]-секунды ) .
CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.




И будет что-нибудь наподобие «24 часа 5 минут». И никогда не будет, скажем, ни 5, ни 15 часов Изображение.
Аватара пользователя
galclerik

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение galclerik »

Вы правы,в этом получается и есть проблема что "час" генерируется однозначным числом, а нужно чтобы всегда было двузначное число.
Вложения
list.rar
(7.02 КБ) 0 скачиваний
list.rar
(7.02 КБ) 0 скачиваний
Аватара пользователя
galclerik

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение galclerik »

Вот прикладываю файл! Спасибо за быстрый ответ!
Вложения
076.rar
(139 байт) 0 скачиваний
076.rar
(139 байт) 0 скачиваний
Аватара пользователя
Iska

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение Iska »

Ага. UTF-8, без BOM, Unix-like разделители. Длина файла какая бывает (в среднем)?

На WSH:

читать дальше »


Код:

Код: Выделить всё

Option Explicit
Dim strSourceFile
Dim lngDayOnSeconds
Dim objRegExp
Dim arrContent
Dim i
If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0) '"E:\Песочница\0335\076"
	With WScript.CreateObject("Scripting.FileSystemObject")
		If .FileExists(strSourceFile) Then
			Randomize Timer
			lngDayOnSeconds = 24 * 60 * 60
			Set objRegExp = WScript.CreateObject("VBScript.RegExp")
			objRegExp.Pattern = "^(\d{2}\|\d{8}\|\d{8})(\d{6})(\|.*)$"
			With .OpenTextFile(strSourceFile)
				arrContent = Split(.ReadAll(), vbLf)
				.Close
			End With
			For i = LBound(arrContent) To UBound(arrContent)
				If objRegExp.Test(arrContent(i)) Then
					arrContent(i) = objRegExp.Replace(arrContent(i), "$1" & Replace(DateAdd("s", Rnd() * lngDayOnSeconds, 0), ":", "") & "$3")
				End If
			Next
			.CopyFile strSourceFile, .BuildPath(.GetParentFolderName(strSourceFile), .GetBaseName(strSourceFile) & ".bak"), True
			With .CreateTextFile(strSourceFile, True)
				.Write Join(arrContent, vbLf)
				.Close
			End With
			Set objRegExp = Nothing
		Else
			WScript.Echo "Source file [" & strSourceFile & "] not found."
			WScript.Quit 2
		End If
	End With
Else
	WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " "
	WScript.Quit 1
End If
WScript.Quit 0


Можно просто перетаскивать потребный файл на скрипт.
Аватара пользователя
galclerik

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение galclerik »

Цитата galclerik:



Путь к папке я поменял,
CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.




Где? Там единственный путь, использовавшийся при отладке, и тот закомментирован.



Скопируйте приведённый код и сохраните его в файл с расширением «.vbs». Затем просто перетащите потребный файл на полученный скрипт.




Цитата galclerik:



И напиши в личку вебмоней или яндекс, перечислю на пиво, ну или на воду)
CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.




Поскольку я денег принципиально не беру, а администрация, судя по всему, в подобных случаях отклоняет мои переадресации, привожу Вам адрес:
Как помочь? | Фонд "Подари жизнь"
.
Аватара пользователя
Iska

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение Iska »

Спасибо большое! Всё получилось! Только вот как можно доработать скрипт чтобы он также работал если у текста побольше размером строка(концовка после тексттексттекст всегда разная).

Например: 02|56873727|20131207011347|тексттексттекст|1|GFDRW|2|||99597970148|||||P||||||70090280174|32379|EV|| 0000000000|G|||||||||||||||||CDINhh02430||||||INhjtr1|||||+@@+
Аватара пользователя
galclerik

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение galclerik »

Цитата galclerik:



(концовка после тексттексттекст всегда разная).
CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.




Я ведь не случайно просил «образец». В начале строк длины частей внутри разделителей хоть стабильны-то?



Я не вижу проблем на предложенной Вами строке: у меня отрабатывает корректно. А у Вас?
Аватара пользователя
Iska

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение Iska »

Начало стабильно всегда. Отрабатывает почему-то так:



02|56873727|2013120574408|тексттексттекст

02|56873727|20131205121609|тексттексттекст

02|56873727|2013120535255|тексттексттекст

02|56873727|20131205235414|тексттексттекст

02|56873727|20131205194530|тексттексттекст

02|56873727|2013120565602|тексттексттекст



прикрепил фалы обработки.
Аватара пользователя
galclerik

Re: CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Сообщение galclerik »

Начало стабильно всегда. Отрабатывает почему-то так:



02|56873727|2013120574408|тексттексттекст

02|56873727|20131205121609|тексттексттекст

02|56873727|2013120535255|тексттексттекст

02|56873727|20131205235414|тексттексттекст

02|56873727|20131205194530|тексттексттекст

02|56873727|2013120565602|тексттексттекст



прикрепил фалы обработки.
Вложения
rrr.rar
(508 байт) 0 скачиваний
rrr.rar
(508 байт) 0 скачиваний
Ответить

Вернуться в «Скриптовые языки администрирования Windows»