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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

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

Новый участник


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

Профиль | Отправить PM | Цитировать


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

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|тексттексттекст

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

Спасибо!

Отправлено: 16:48, 08-12-2013

 

Ветеран


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

Профиль | Отправить PM | Цитировать


galclerik, образец файла из нескольких строк выложите (нужно опознать кодировку).
Цитата galclerik:
([0-2] [0-4]-часы, [0-5] [0-9]-минуты, [0-5] [0-9]-секунды ) . »
И будет что-нибудь наподобие «24 часа 5 минут». И никогда не будет, скажем, ни 5, ни 15 часов .

Последний раз редактировалось Iska, 09-12-2013 в 00:25. Причина: Добавлена пропущенная запятая


Отправлено: 00:09, 09-12-2013 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar 076.rar
(139 байт, 5 просмотров)

Вот прикладываю файл! Спасибо за быстрый ответ!

Отправлено: 10:06, 09-12-2013 | #3


Ветеран


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

Профиль | Отправить PM | Цитировать


Ага. 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 & " <Source file>"
	WScript.Quit 1
End If

WScript.Quit 0

Можно просто перетаскивать потребный файл на скрипт.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:26, 09-12-2013 | #4


Новый участник


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

Профиль | Отправить PM | Цитировать


Количество строк в среднем достигает 35000.

Подскажи пожалуйста как пользоваться. (установлен windows7/32bit)Путь к папке я поменял, но вот при запуске и перетаскивании пишет "сценарий не указан"

И напиши в личку вебмоней или яндекс, перечислю на пиво, ну или на воду)

Последний раз редактировалось galclerik, 09-12-2013 в 15:44.


Отправлено: 15:23, 09-12-2013 | #5


Ветеран


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

Профиль | Отправить PM | Цитировать


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


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

Цитата galclerik:
И напиши в личку вебмоней или яндекс, перечислю на пиво, ну или на воду) »
Поскольку я денег принципиально не беру, а администрация, судя по всему, в подобных случаях отклоняет мои переадресации, привожу Вам адрес: Как помочь? | Фонд "Подари жизнь".
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:06, 09-12-2013 | #6


Новый участник


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

Профиль | Отправить PM | Цитировать


Спасибо большое! Всё получилось! Только вот как можно доработать скрипт чтобы он также работал если у текста побольше размером строка(концовка после тексттексттекст всегда разная).
Например: 02|56873727|20131207011347|тексттексттекст|1|GFDRW|2|||99597970148|||||P||||||70090280174|32379|EV|| 0000000000|G|||||||||||||||||CDINhh02430||||||INhjtr1|||||+@@+

Отправлено: 17:25, 09-12-2013 | #7


Ветеран


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

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 17:39, 09-12-2013 | #8


Новый участник


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

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar rrr.rar
(508 байт, 5 просмотров)

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

02|56873727|2013120574408|тексттексттекст
02|56873727|20131205121609|тексттексттекст
02|56873727|2013120535255|тексттексттекст
02|56873727|20131205235414|тексттексттекст
02|56873727|20131205194530|тексттексттекст
02|56873727|2013120565602|тексттексттекст

прикрепил фалы обработки.

Последний раз редактировалось galclerik, 09-12-2013 в 17:48.


Отправлено: 17:43, 09-12-2013 | #9


Ветеран


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

Профиль | Отправить PM | Цитировать


galclerik, интересно было бы посмотреть на региональные стандарты. Исполните следующий код:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim i


With WScript.CreateObject("Scripting.FileSystemObject")
	With .CreateTextFile(.BuildPath(.GetParentFolderName(WScript.ScriptFullName), "list.txt"), True)
		For i = 0 To 24 * 60 * 60 - 1
			.WriteLine DateAdd("s", i, 0)
		Next
	End With
End With

WScript.Quit 0

и выложите в архиве содержимое полученного в результате исполнения файла «list.txt».

Отправлено: 18:36, 09-12-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск строк в файле и замена их на числа,сгенерированные по маске.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск, удаление, замена и добавление строк в текстового файле. Что возможно? akrav Скриптовые языки администрирования Windows 8 06-12-2015 13:22
CMD/BAT - Поиск и удаление строк в файле по сложным условиям i7allia Скриптовые языки администрирования Windows 2 30-10-2013 17:06
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox ultrarare Скриптовые языки администрирования Windows 11 03-07-2013 14:37
CMD/BAT - Поиск файлов по маске и их замена другими. lexxstr Скриптовые языки администрирования Windows 0 20-12-2012 22:54
CMD/BAT - Замена и добавление числа в txt файле Tsok Скриптовые языки администрирования Windows 0 17-10-2011 17:22




 
Переход