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

Название темы: Bat-файл отбора из текста
Показать сообщение отдельно

Ветеран


Сообщения: 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

Название темы: Bat-файл отбора из текста