Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Извлечь числовой код из тектового файла (http://forum.oszone.net/showthread.php?t=317247)

perjes 28-07-2016 12:44 2654823

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

Iska 28-07-2016 15:55 2654894

Цитата:

Цитата perjes
полный символьной абракадабры, »

Символьной ли? Упакуйте образец в архив и приложите к сообщению.

perjes 28-07-2016 16:35 2654921

Вложений: 1
пример во вложении
положение искомого кода в тексте может быть разным

Iska 28-07-2016 19:08 2654994

Попробуйте так (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 2655000

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 2655032

Цитата:

Цитата alpap
findstr/rc:"\<[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9]\>" »

alpap, там может быть любое число: сравните пример, приведённый автором в первом сообщении, и выложенный им же позже образец.


Время: 20:16.

Время: 20:16.
© OSzone.net 2001-