PDA

Показать полную графическую версию : Bat-файл отбора из текста


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

Iska
24-09-2016, 07:11
hancogruss, крайне желателен образец документа. Упакуйте его в архив и приложите к сообщению.

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

y--
24-09-2016, 15:04
hancogruss, TYPE text.txt|findstr /B /C:"Save My Money:"а перенаправишь куда тебе надо

hancogruss
24-09-2016, 17:02
а перенаправишь куда тебе надо »

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

y--
24-09-2016, 18:43
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"это быстрее отработает

Iska
25-09-2016, 04:47
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)»




© OSzone.net 2001-2012