Войти

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


Alexander_88
15-02-2016, 06:43
Здравствуйте, подскажите, пожалуйста, как можно изменить тхт файл 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
и два пробела »
А попадётся какой-нибудь 1080? И «поплывёт» Ваша красивая картинка.

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

Alexander_88
15-02-2016, 07:51
Вы для каких целей делаете это преобразование? »

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

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

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

Iska
15-02-2016, 11:35
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
Спасибо, попробовал перетянуть файл, Все отлично конвертировалось. Как я понимаю путь к файлу в скрипте (как я привык делать) нельзя указать, Сейчас читаю/разбираюсь как указать файл аргументом, наверно мне это больше подойдет, т.к. такие скрипты будут в нескольких папках, каждый скрипт будет обрабатывать свои файлы har.txt, они тоже все в разных папках, поэтому удобней будет наверно аргументом указать, если конечно я правильно понимаю как это работает.




© OSzone.net 2001-2012