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

d22cva 04-01-2015 16:37 2451812

Добавление строки после каждой строки с подстановкой значения в имя файла
 
Имею программу передач такого типа в текстовом файле (исходный файл)

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 2451827

Цитата:

Цитата d22cva
такого типа в текстовом файле »

Упакуйте образец текстового файла в архив. Архив выложите на RGhost. Ссылку — сюда.

d22cva 04-01-2015 17:14 2451836

Исходный файл http://rghost.ru/60133388

Iska 04-01-2015 17:49 2451862

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 2452087

Iska, Спасибо огромное!!! Почти идеально! А можно сделать так чтобы программа вставляла сначала в начало каждой строки comment 0 , а потом выполнялась ваша программа???
Пример с 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 2452092

Цитата:

Цитата d22cva
вставляла сначала в начало каждой строки comment 0 , а потом выполнялась ваша программа??? »

Зачем так?

Замените:
Код:

.WriteLine strLine
на:
Код:

.WriteLine "comment 0 " & strLine


Время: 14:09.

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