hancogruss |
24-09-2016 04:49 2671603 |
Bat-файл отбора из текста
Здравствуйте есть текст, в нем есть одинаковые строчки типа Save my money: $0.00
Нужно что бы бат файл находил все такие строчки с значениями выше 0.00 и записывал в новый текстовой документ.
|
hancogruss, крайне желателен образец документа. Упакуйте его в архив и приложите к сообщению.
|
hancogruss |
24-09-2016 14:09 2671700 |
Вложений: 1
Цитата:
Цитата Iska
hancogruss, крайне желателен образец документа. Упакуйте его в архив и приложите к сообщению. »
|
|
hancogruss,
Код:
TYPE text.txt|findstr /B /C:"Save My Money:"
а перенаправишь куда тебе надо
|
hancogruss |
24-09-2016 17:02 2671757 |
Цитата:
Цитата y--
а перенаправишь куда тебе надо »
|
Мне нужно что бы выводились только значения больше нуля
Вместе со строкой 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 )»
|
Время: 01:17.
© OSzone.net 2001-