Компьютерный форум 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=311589)

Alexander_88 15-02-2016 06:43 2606179

Конвертировать тхт файл с характеристиками видео файла
 
Здравствуйте, подскажите, пожалуйста, как можно изменить тхт файл har.txt таким образом:
Исходный файл har.txt:

Код:

File Name.type:  0001finish.wmv
Resolution:  640x480
Duration:  0:13:21
Filesize:  92Mb
File Name.type:  0002start.avi
Resolution:  480x360
Duration:  0:03:52
Filesize:  30Mb
File Name.type:  0003red.mp4
Resolution:  640x480
Duration:  0:17:02
Filesize:  163Mb
File Name.type:  0004blue.wmv
Resolution:  640x480
Duration:  0:08:46
Filesize:  73Mb
File Name.type:  0005start.wmv
Resolution:  640x480
Duration:  0:10:10
Filesize:  82Mb

После применения скрипта должен получиться такой файл har2.txt:

Код:

wmv | 0:13:21 | 640x480 | 92Mb
avi | 0:03:52 | 480x360 | 30Mb
mp4 | 0:17:02 | 640x480 | 163Mb
wmv | 0:08:46 | 640x480 | 73Mb
wmv | 0:10:10 | 640x480 | 82Mb

Получается, что в исходном файле, характеристики исходного видео расписаны в 4ех строках.
Из первой строчки, нужно извлечь правую часть до первой встречной точки. В остальных 3ех строках нужно извлечь все, после знака двоеточия и двух пробелов за ним. Извлекаемые результаты поместить в одну строку и поставить между ними разделительный знак и два пробела от этого знака (справа и слева), как на примере har2.txt. Потом начать обрабатывать следующие четыре строки и т.д. :)

Iska 15-02-2016 07:20 2606182

Цитата:

Цитата Alexander_88
и два пробела »

А попадётся какой-нибудь 1080? И «поплывёт» Ваша красивая картинка.

Вы для каких целей делаете это преобразование?

Alexander_88 15-02-2016 07:51 2606185

Цитата:

Цитата Iska
Вы для каких целей делаете это преобразование? »

Я делаю несколько вариантов оформления видео файла (они постоянно добавляются). Первый вариант уже есть, его генерирует программа, второй (в одну строчку) программа не может делать... хочу его генерировать скриптом, чтобы вручную не перекапывать все (файлов не одна тысяча), конечно же для экономия времени.

Цитата:

Цитата Iska
А попадётся какой-нибудь 1080? И «поплывёт» Ваша красивая картинка. »

Конечно есть и такие. Но все равно есть два пробела перед разрешением, единственное то, что количество чисел больше в самом расширении, поэтому необходимо извлекать именно все символы после двоеточия и двух пробелов (в 2, 3, 4 строках блока) :)

Iska 15-02-2016 11:35 2606230

WSH:
Скрытый текст
Код:

Option Explicit

Const strDelimiter = " | "

Dim strSourceFile
Dim strDestinationFile

Dim strContent
Dim strNewContent
Dim objMatch


If WScript.Arguments.Count = 1 Then
        strSourceFile = WScript.Arguments.Item(0)
       
        With WScript.CreateObject("Scripting.FileSystemObject")
                If .FileExists(strSourceFile) Then
                        strDestinationFile = .BuildPath(.GetParentFolderName(strSourceFile), .GetBaseName(strSourceFile) & "2." & .GetExtensionName(strSourceFile))
                       
                        With .OpenTextFile(strSourceFile)
                                strContent = .ReadAll()
                                .Close
                        End With
                       
                        With WScript.CreateObject("VBScript.RegExp")
                                .Pattern = _
                                        "File Name.type:  .*\.(.*)\r\n" & _
                                        "Resolution:  (.*)\r\n" & _
                                        "Duration:  (.*)\r\n" & _
                                        "Filesize:  (.*)\r\n"
                                .Global = True
                                .IgnoreCase = True
                                .MultiLine = True
                               
                                If .Test(strContent) Then
                                        strNewContent = ""
                                       
                                        For Each objMatch In .Execute(strContent)
                                                With objMatch
                                                        strNewContent = strNewContent & Trim(.Submatches(0)) & strDelimiter & Trim(.Submatches(2)) & strDelimiter & Trim(.Submatches(1)) & strDelimiter & Trim(.Submatches(3)) & vbCrLf
                                                End With
                                        Next
                                End If
                        End With
                       
                        With .CreateTextFile(strDestinationFile, True)
                                .Write strNewContent
                                .Close
                        End With
                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


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

Alexander_88 15-02-2016 14:17 2606270

Спасибо, попробовал перетянуть файл, Все отлично конвертировалось. Как я понимаю путь к файлу в скрипте (как я привык делать) нельзя указать, Сейчас читаю/разбираюсь как указать файл аргументом, наверно мне это больше подойдет, т.к. такие скрипты будут в нескольких папках, каждый скрипт будет обрабатывать свои файлы har.txt, они тоже все в разных папках, поэтому удобней будет наверно аргументом указать, если конечно я правильно понимаю как это работает.


Время: 09:17.

Время: 09:17.
© OSzone.net 2001-