Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - Bat-файл отбора из текста

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


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

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


Здравствуйте есть текст, в нем есть одинаковые строчки типа Save my money: $0.00
Нужно что бы бат файл находил все такие строчки с значениями выше 0.00 и записывал в новый текстовой документ.

Отправлено: 04:49, 24-09-2016

 

Ветеран


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

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


hancogruss, крайне желателен образец документа. Упакуйте его в архив и приложите к сообщению.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:11, 24-09-2016 | #2



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

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


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


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

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


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

Цитата Iska:
hancogruss, крайне желателен образец документа. Упакуйте его в архив и приложите к сообщению. »

Отправлено: 14:09, 24-09-2016 | #3

y-- y-- вне форума

Старожил


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

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


hancogruss,
Код: Выделить весь код
TYPE text.txt|findstr /B /C:"Save My Money:"
а перенаправишь куда тебе надо

-------
Ты это - заходи если что...


Отправлено: 15:04, 24-09-2016 | #4


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


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

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


Цитата y--:
а перенаправишь куда тебе надо »
Мне нужно что бы выводились только значения больше нуля
Вместе со строкой Name, если можно

Последний раз редактировалось hancogruss, 24-09-2016 в 17:53.


Отправлено: 17:02, 24-09-2016 | #5

y-- y-- вне форума

Старожил


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

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


hancogruss,
Код: Выделить весь код
TYPE text.txt|findstr /B /C:"Save My Money:"|findstr /v /C:"$0.00"
а со строкой Name это медленный разбор будет - только полный парсинг через for.

И наверное правильнее так даже делать:
Код: Выделить весь код
findstr /B /C:"Save My Money:" text.txt|findstr /v /C:"$0.00"
это быстрее отработает

-------
Ты это - заходи если что...


Отправлено: 18:43, 24-09-2016 | #6


Ветеран


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

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


hancogruss, попробуйте так (на WSH):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFile

Dim strContent

Dim objRegExp
Dim objMatch


If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0)
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		If .FileExists(strSourceFile) Then
			With .OpenTextFile(strSourceFile)
				strContent = .ReadAll()
				.Close
			End With
			
			Set objRegExp = WScript.CreateObject("VBScript.RegExp")
			
			With objRegExp
				.IgnoreCase = True
				.Global = True
				.Pattern = "=+\r\nSave My Money: \$(\d+\.\d{2})\r\nName: (.+)\r\n(?==+)"
			End With
			
			If objRegExp.Test(strContent) Then
				With .CreateTextFile(.GetBaseName(strSourceFile) & "_filtered" & .GetExtensionName(strSourceFile), True)
					For Each objMatch In objRegExp.Execute(strContent)
						If CSng(objMatch.Submatches.Item(0)) > 0 Then
							.WriteLine objMatch.Submatches.Item(1) & vbTab & objMatch.Submatches.Item(0)
						End If
					Next
					
					.Close
				End With
			Else
				WScript.Echo "Pattern [" & objRegExp.Pattern & "] not found in content of source file [" & strSourceFile & "]."
				WScript.Quit 3
			End If
			
			Set objRegExp = Nothing
		Else
			WScript.Echo "Can't find source file [" & strSourceFile & "]."
			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

Сохраните код в файл с расширением .vbs. Путь к исходному файлу задаётся параметром скрипта (также можно просто перетащить исходный файл на скрипт в Проводнике). Результирующий файл будет создан в текущем каталоге на основе имени и расширения исходного файла с добавлением «_filtered» к имени (если файл с таким именем уже существует — он будет молча перезаписан). Шаблон регулярного выражения рассчитан только на формат денежных сумм вида «$0.00», но не «$#,##0.00» или «($0.00)»

Отправлено: 04:47, 25-09-2016 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как записать в txt файл большой кусок текста с помощью bat Андрей_Угаров@vk Скриптовые языки администрирования Windows 17 15-12-2022 18:47
CMD/BAT - [решено] Поиск и копирование текста из одного ini-файла в другой с помощью bat-ника Nun-Nun Скриптовые языки администрирования Windows 10 12-08-2016 22:32
CMD/BAT - Bat, который создаёт другой bat с командами на изменение текста mazahaka2000@vk Скриптовые языки администрирования Windows 2 13-06-2015 04:52
CMD/BAT - [решено] .bat: удаление значения реестра после отбора Lightman123 Скриптовые языки администрирования Windows 25 17-08-2011 13:54
CMD/BAT - [решено] программа(.bat файл) которая случайным образом запускает .bat файлы из предложенных gangsterovich Скриптовые языки администрирования Windows 1 07-12-2010 06:45




 
Переход