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

Показать сообщение отдельно

Ветеран


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

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


Цитата alex1985khv:
Сам файл состоит как из примера выше »
Сам файл может быть в произвольной кодировке. В случае юникода — с BOM или без. Могут быть разные концы строк.

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

Dim strSourceFile
Dim strDestFile

Dim strContent
Dim strOutputContent

Dim objMatch


If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0)
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		If .FileExists(strSourceFile) Then
			strDestFile = "output.txt"
			
			With .OpenTextFile(strSourceFile)
				strContent = .ReadAll()
				.Close
			End With
			
			With WScript.CreateObject("VBScript.RegExp")
				.IgnoreCase = True
				.Global = True
				.Multiline = True
				.Pattern = _
					"^Acct Number & Extension (\d+) [\s\S]*?" & _
					"Acquirer Reference Nbr (\d+) [\s\S]*?" & _
					"Source Amount (\d+) .*$"
				
				If .Test(strContent) Then
					strOutputContent = ""
					
					For Each objMatch In .Execute(strContent)
						With objMatch.SubMatches
							strOutputContent = strOutputContent & .Item(1) & "," & .Item(0) & "," & .Item(2) & vbCrLf
						End With
					Next
				Else
					WScript.Echo "Can't find pattern [" & objRegExp.Pattern & "]."
					WScript.Quit 3
				End If
			End With
			
			With .CreateTextFile(strDestFile)
				.Write strOutputContent
				.Close
			End With
		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

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

Отправлено: 03:16, 03-11-2015 | #4