Flasher

|
Posted: Wed Sep 28, 2016 20:02 Post subject: |
|
|
Keeper
Разбиение на части и вырезка - это не одно и то же. Для разбиения нужно знать, сколько частей требуется либо размер частей кроме последней.
 Касаемо удаления исходников дописок хватает: Code: | '======================================================================
' Склеить выбранные видеофрагменты в файл с именем последнего фрагмента
' Условие: путь запуска пустой
' Параметры: %F
' "<путь целевого каталога>"
' "<добавка к базовому имени>"
' <скрывать/показывать/сворачивать консоль: 0/1/2>
' <удалять исходники после выполнения: 1> (необязательный)
' Примеры: %F "%T" _joined 0 | %F "%P" "" 2 1
'======================= Путь к утилите FFmpeg ========================
Prog = """%COMMANDER_PATH%\Utils\FFmpeg\ffmpeg.exe"""
'======================================================================
With WScript.Arguments
Title = " Объединение видео" : C = .Count : If C = 0 Then WScript.Quit
If C < 4 Then MsgBox "Укажите 4 параметра!", 4144, Title : WScript.Quit
List = .Item(0) : T = .Item(1) : PFix = .Item(2) : Mode = .Item(3)
If C = 5 Then Del = .Item(4)
End With : Dim WSH : Set WSH = CreateObject("WScript.Shell")
If Del = 1 Then Set Dict = CreateObject("Scripting.Dictionary")
With CreateObject("Scripting.FileSystemObject")
All = .OpenTextFile(List).ReadAll : T = .BuildPath(T, "\")
With New Regexp
.IgnoreCase = True : .Multiline = True : .Global = True
.Pattern = "^.*\.(3g[2p]2?|4xm|avi|asf|dat|dvr-ms|fl[iv]|film" &_
"_cpk|gif|h26[134]|qtm2ts?|m4v|mkv|mo[dv]|mp4|mpe?g|mxf|nuv|" &_
"og[gm]|pva|rm|roq|swf|ts|tp|t[ox]d|vcd|vivo|vob|webm|wmv)(?!\\)$"
If Not .Test(All) Then MsgBox "В выбранном списке нет " &_
"поддерживаемых файлов!", 4144, Space(22) & Title : WScript.Quit
With .Execute(All)
If .Count = 1 Then WScript.Quit
For i = 0 To .Count - 1
If Del = 1 Then Dict.Add .Item(i).Value, ""
S = S & "file '" & .Item(i).Value & "'" & VbCrLf
Next : F = .Item(i - 1).Value End With
End With
With .OpenTextFile(List, 2) : .Write Left(S, Len(S) - 2) : .Close
End With : If WSH.CurrentDirectory & "\" = T Then P = "L" Else P = "R"
BN = .GetBaseName(F) & PFix : Ext = "." & .GetExtensionName(F)
i = 0 : F = BN & Ext
While .FileExists(T & F) Or .FolderExists(T & F)
i = i + 1 : F = BN & " (" & i & ")" & Ext
Wend : F = T & F
WSH.Run Prog & " -safe 0 -f concat -i " & List & " -c copy """ & F & """", Mode, True
If .FileExists(F) Then
If Del = 1 Then
Set RBin = CreateObject("Shell.Application").Namespace(&Ha)
CD = WSH.CurrentDirectory & "\"
For Each Key in Dict.Keys : RBin.MoveHere(CD & Key) : Next
End If: WSH.Exec "%COMMANDER_EXE% /S /O /A /" & P & "=""" & F & """ /P=" & P
End If
End With |
Не тестировал.
Keeper wrote: | у меня в именах есть пробелы и другие символы, которые ему стали не по нраву. | Вряд ли пробелы, там про них и не сказано. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|