Войти

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


perjes
28-07-2016, 12:44
Привет, задачка на поиск числа
Имеется файл, полный символьной абракадабры,
но в нем есть код вида 1111-222-000.
Код может иметь любое числовое значение в указанном формате и находиться где угодно в файле, это самое важное условие.
Как добыть этот код скажем на экран?

Iska
28-07-2016, 15:55
полный символьной абракадабры, »
Символьной ли? Упакуйте образец в архив и приложите к сообщению.

perjes
28-07-2016, 16:35
пример во вложении
положение искомого кода в тексте может быть разным

Iska
28-07-2016, 19:08
Попробуйте так (WSH):
Option Explicit

Dim strSourceFile
Dim strContent

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

With WScript.CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\d*-\d*-\d*"

If .Test(strContent) Then
WScript.Echo .Execute(strContent).Item(0).Value
Else
WScript.Echo "Nothing found"
WScript.Quit 3
End If
End With
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Usage: wscript.exe " & WScript.ScriptName & " <Source file>"
WScript.Quit 1
End If

WScript.Quit 0

Сохраните приведённый код в файл с расширением «.vbs». Путь к искомому файлу указывается аргументом скрипта (также можно просто перетянуть исходный файл на скрипт в Проводнике).

P.S. Содержимое результирующего окна MessageBox можно скопировать в буфер обмена просто нажав в нём «Ctrl-C»:
---------------------------
Windows Script Host
---------------------------
3213333-2342342-999
---------------------------
ОК
---------------------------

alpap
28-07-2016, 19:21
perjes,
Например так:

@echo off
<"t.txt" (for /f "tokens=1-3 delims=-" %%a in ('more^|findstr/rc:"\<[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9]\>"') do @(set "t1=%%a"& set "t3=%%c"& cmd/v/c echo !t1:~-4!-%%b-!t3:~,3!))
pause>nul

все будет зависеть от того что в строках, будет в этой строке символ "-", этот код уже поломается.

Iska
28-07-2016, 21:54
findstr/rc:"\<[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9]\>" »
alpap, там может быть любое число: сравните пример, приведённый автором в первом сообщении, и выложенный им же позже образец.




© OSzone.net 2001-2012