Войти

Показать полную графическую версию : [решено] Добавление строки после каждой строки с подстановкой значения в имя файла


d22cva
04-01-2015, 16:37
Имею программу передач такого типа в текстовом файле (исходный файл (http://rghost.ru/60133388))

00:00 День в календаре 1612
00:05 Актуальное интервью 1512
00:20 Экстренная служба 1512
00:25 Прогноз погоды вечер 1512
00:30 Куда обратиться 1512
00:35 Интернет-обзор 1512

Мне необходимо добавить строку movie 0:00:09.04 [0.10] E:\Ролики\День_в_календаре. avi после каждой строки так чтобы имя предыдущей строки подставлялось в имя файла в адресе пути("Е:\Ролики\..."), так это все должно выглядеть:

00:00 День в календаре 1612
movie 0:00:09.04 [0.10] E:\Ролики\День в календаре 1612.avi
00:05 Актуальное интервью 1512
movie 0:00:09.04 [0.10] E:\Ролики\Актуальное интервью 1512.avi
00:20 Экстренная служба 1512
movie 0:00:09.04 [0.10] E:\Ролики\Экстренная служба 1512.avi
00:25 Прогноз погоды вечер 1512
movie 0:00:09.04 [0.10] E:\Ролики\Прогноз погоды вечер 1512.avi
00:30 Куда обратиться 1512
movie 0:00:09.04 [0.10] E:\Ролики\Куда обратиться 1512.avi
00:35 Интернет-обзор 1512
movie 0:00:09.04 [0.10] E:\Ролики\Интернет-обзор 1512.avi

Как это можно релизовать? Если не трубно, то напишите подробно.

Iska
04-01-2015, 16:58
такого типа в текстовом файле »
Упакуйте образец текстового файла в архив. Архив выложите на RGhost. Ссылку — сюда.

d22cva
04-01-2015, 17:14
Исходный файл http://rghost.ru/60133388

Iska
04-01-2015, 17:49
d22cva, давайте попробуем на WSH:
Option Explicit

Dim strPattern

Dim strSourceFile
Dim strTempFileName

Dim strContent
Dim strLine


strPattern = "movie 0:00:09.04 [0.10] E:\Ролики\[:|*?].avi"

If WScript.Arguments.Count = 1 Then
strSourceFile = WScript.Arguments.Item(0)

With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(strSourceFile) Then
strTempFileName = GetTemporaryName()

With .OpenTextFile(strSourceFile)
strContent = .ReadAll()
.Close
End With

With .CreateTextFile(strTempFileName, True)
For Each strLine In Split(strContent, vbCrLf)
.WriteLine strLine

If Len(Trim(strLine)) <> 0 Then
.WriteLine Replace(strPattern, "[:|*?]", Split(strLine, " ", 2)(1))
End If
Next

.Close
End With

.CopyFile strSourceFile, .BuildPath(.GetParentFolderName(strSourceFile), .GetBaseName(strSourceFile) & ".bak"), True
.CopyFile strTempFileName, strSourceFile, True
.DeleteFile strTempFileName, True
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Usage:"
WScript.Quit 1
End If

WScript.Quit 0
'=============================================================================

'=============================================================================
' Серый форум / VBScript: генерация пути для временного файла или папки
' (http://forum.script-coding.com/viewtopic.php?id=1221)
'=============================================================================
Function GetTemporaryName()
Const TemporaryFolder = 2

Dim strTempName

With WScript.CreateObject("Scripting.FileSystemObject")
Do
strTempName = .BuildPath(.GetSpecialFolder(TemporaryFolder), .GetTempName)
Loop While .FileExists(strTempName) Or .FolderExists(strTempName)
End With

GetTemporaryName = strTempName
End Function
'=============================================================================
Сохраните код в файл с расширением «.vbs». Целевой файл указывается аргументом командной строки скрипта. Также можно просто перетащить целевой файл на скрипт из Проводника.

d22cva
05-01-2015, 06:43
Iska, Спасибо огромное!!! Почти идеально! А можно сделать так чтобы программа вставляла сначала в начало каждой строки comment 0 , а потом выполнялась ваша программа???

comment 0 00:00 День в календаре 1612
comment 0 00:05 Актуальное интервью 1512
comment 0 00:20 Экстренная служба 1512
comment 0 00:25 Прогноз погоды вечер 1512
comment 0 00:30 Куда обратиться 1512
comment 0 00:35 Интернет-обзор 1512

А потом подставлялась каждая строка как в предыдущем посте, чтоб получилось в итоге так

comment 0 00:00 День в календаре 1612
movie 0:00:09.04 [0.10] E:\Ролики\День в календаре 1612.avi
comment 0 00:05 Актуальное интервью 1512
movie 0:00:09.04 [0.10] E:\Ролики\Актуальное интервью 1512.avi
comment 0 00:20 Экстренная служба 1512
movie 0:00:09.04 [0.10] E:\Ролики\Экстренная служба 1512.avi
comment 0 00:25 Прогноз погоды вечер 1512
movie 0:00:09.04 [0.10] E:\Ролики\Прогноз погоды вечер 1512.avi
comment 0 00:30 Куда обратиться 1512
movie 0:00:09.04 [0.10] E:\Ролики\Куда обратиться 1512.avi
comment 0 00:35 Интернет-обзор 1512
movie 0:00:09.04 [0.10] E:\Ролики\Интернет-обзор 1512.avi

Iska
05-01-2015, 07:50
вставляла сначала в начало каждой строки comment 0 , а потом выполнялась ваша программа??? »
Зачем так?

Замените:
.WriteLine strLine
на:
.WriteLine "comment 0 " & strLine




© OSzone.net 2001-2012