Показать полную графическую версию : Bat-файл отбора из текста
hancogruss
24-09-2016, 04:49
Здравствуйте есть текст, в нем есть одинаковые строчки типа Save my money: $0.00
Нужно что бы бат файл находил все такие строчки с значениями выше 0.00 и записывал в новый текстовой документ.
hancogruss, крайне желателен образец документа. Упакуйте его в архив и приложите к сообщению.
hancogruss
24-09-2016, 14:09
hancogruss, крайне желателен образец документа. Упакуйте его в архив и приложите к сообщению. »
hancogruss, TYPE text.txt|findstr /B /C:"Save My Money:"а перенаправишь куда тебе надо
hancogruss
24-09-2016, 17:02
а перенаправишь куда тебе надо »
Мне нужно что бы выводились только значения больше нуля
Вместе со строкой Name, если можно
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"это быстрее отработает
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.