Страница 4 из 5

Добавлено: Пт июн 24, 2011 16:28
Batya
shveicar писал(а):Ну конечно, речь идет именно о замене фрагмента текста в теге, как я и пытался (видимо не совсем понятно) объяснить.
И даже сейчас ты не доходчиво объясняешь. То, что ты хочешь, я понял исключительно из описанной тобой процедуры проверки.
Ясно, что нужно заменить текст в файлах. Но что текст для замены нужно брать из соответствующей строки другого файла, это было неясно.

Добавлено: Пт июн 24, 2011 16:35
shveicar
Извиняюсь, на будущее учту.

Добавлено: Пт июн 24, 2011 16:45
Flasher
Batya писал(а):Но что текст для замены нужно брать из соответствующей строки другого файла, это было неясно.
А мне сразу было ясно:
Замена должна производиться из тексового файла в котором список ссылок для замены. ....
Естественно число html файлов и число ссылок в текстовом файле совпадают, то есть в каждом выделенном файле html производится замена одной ссылки на одну ссылку по порядку из текстового файла списка.

Добавлено: Пт июн 24, 2011 16:56
Batya
Flasher писал(а):А мне сразу было ясно
Ты счастливый человек - ничего не отвлекает от проблем TC посреди рабочего дня.

Добавлено: Пт июн 24, 2011 20:52
Avada
Последующий оффтоп отделён в тему Создание группы HTML-файлов с именами из файла-списка.

Добавлено: Сб июн 25, 2011 23:07
Flasher
shveicar
Честно пытался сделать набросок, но выходит не пойми чего:

Код: Выделить всё

' Замена в содержимом каждого из выделенных файлов строки на строку из файла списка
' в соответствии с сортировкой в активной панели и порядком следования в списке
' Параметры: %L "<Путь к файлу со списком замен>" 
'================================================
T=CreateObject("WScript.Shell").ExpandEnvironmentStrings(WScript.Arguments(1))
Str="<META HTTP-EQUIV=""Refresh"" CONTENT=""0; URL=prise.zip"">"

With CreateObject("Scripting.FileSystemObject")
Set Temp = .GetFile(WScript.Arguments(0)).OpenAsTextStream(1)
Set List = .GetFile(T).OpenAsTextStream(1)
On Error Resume Next
Do While Not Temp.AtEndOfStream And Not List.AtEndOfStream
  If Abs(Temp.Line)=Abs(List.Line) Then
   Set F = .OpenTextFile(Temp.ReadLine,1)
   Str1 = Left(List.ReadLine,Len(List.ReadLine))
   R = Replace(F.ReadAll, Str, "<META HTTP-EQUIV=""\Refresh"" CONTENT=""0; URL=" & Str1 & """>",1,1,1)
   .OpenTextFile(Temp.ReadLine,2).Write R
   F.Close
  End If
Loop
End With
WScript.Quit
Тут какое-то условие нужно особое. В общем, надо ждать Батю, пусть поправит, где я промахнулся. :)

Добавлено: Пн июн 27, 2011 18:11
Batya
shveicar писал(а):Пытаюсь проверить - жму кнопку скрипта ничего не происходит.
Изменил свой скрипт.
Изменилась и кнопка.
Проверь.

Добавлено: Вт июн 28, 2011 01:27
shveicar
Спасибо Batya - Ваш скрипт работает! (единственное путь к файлу filelist.txt
пришлось указывать полностью) в начальном варианте не работает, поясняю- работает с таким кодом кнопки

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\html\zamema_po_sablonu.vbs
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=prise.zip'>" "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=%%FromFileArr%%'>" 1 %L "f:\total\Utils\html\filelist.txt"
F:\WINDOWS\System32\WScript.exe
zamema_po_sablonu

0
-1


Ну это не существенно. главное результат! Еще раз огромное Cпасибо!

Добавлено: Вт июн 28, 2011 09:26
Batya
shveicar писал(а):единственное путь к файлу filelist.txt пришлось указывать полностью
Естесственно, я же чисто схематично привёл кнопку и не знаю путь к твоему filelist.txt.
Справедливости ради надо отметить, что может работать и без указания полного пути, если кнопка нажимается, когда текущей папкой является та, где лежит filelist.txt. А также будет работать, если заполнен "Путь запуска" кнопки, и filelist.txt лежит в этой папке.

Добавлено: Вт июн 28, 2011 13:04
shveicar
А также будет работать, если заполнен "Путь запуска" кнопки, и filelist.txt лежит в этой папке
А вот этот вариант я не учел. Для меня - он пожалуй самый удобный! :lol: Еще раз - премного благодарен!

Добавлено: Чт июл 21, 2011 20:29
shveicar
Добрый вечер. Batya - а возможно в Замечательном скрипте Добавить окно для ввода заменяемого текста, просто часто, в разных тегах попадается одинаковые значения для замены из файла списка, и приходится каждый раз менять параметры в кнопке( бывают длинные выражения), вобщем, сегодня пол-дня провел, чтобы заменить 5 одинаковых строчек в разных тегах. Конечно без скрипта, учитывая объем файлов, потребовалась наверное, неделя, Но Если такое возможно, Буду очень признателен, Спасибо.

Добавлено: Чт июл 21, 2011 20:41
Flasher
Если не ошибаюсь, заменить

Код: Выделить всё

With WScript
  Str1 = .Arguments(0)
  Str2 = .Arguments(1)
  Mode = .Arguments(2)
  FF   = .Arguments(3)
  If .Arguments.Count > 4 Then FZ = .Arguments(4)
End With 
на

Код: Выделить всё

Str1 = InputBox("Введите искомую строку:", "Замена текста в файлах с помощью шаблонов")
With WScript
  Str2 = .Arguments(0)
  Mode = .Arguments(1)
  FF   = .Arguments(2)
  If .Arguments.Count > 3 Then FZ = .Arguments(3)
End With 
В параметрах не использовать первый исходный.

Добавлено: Чт июл 21, 2011 21:21
shveicar
Спасибо, окно конечно появляется, но после ввода текста, - появляется еще одно окно для ввода текста замены, а речь идет о замене текста из строчек текстового файла, filelist.txt И потом как же быть с параметрами в кнопке("проблема" двойных кавычек), по идее в итоге. в кнопке должны остаться параметры

Код: Выделить всё

0 %L "filelist.txt"
или

Код: Выделить всё

1 %L "filelist.txt"
в зависимости от тега пример для первого случая значение в кнопке 0

Код: Выделить всё

"('flvpla1/player.swf','mplayer','640','380','9','000000')" "('%%FromFileArr%%','mplayer','640','380','9','000000')" 0 %L "filelist.txt"
и для второго случая значение1

Код: Выделить всё

"<a href='flvpla1/player.swf' rel='nofollow'>" "<a href='%%FromFileArr%%' rel='nofollow'>" 1 %L "filelist.txt"
только, во втором случае приходится в ручную менять двойные кавычки в теге, на одинарные, а - это крайне не удобно. поясню - в исходном варианте2, оригинал тега выглядит

Код: Выделить всё

<a href="flvpla1/player.swf" rel="nofollow">

Добавлено: Чт июл 21, 2011 21:39
Flasher
shveicar писал(а):Спасибо, окно конечно появляется, но после ввода текста, - появляется еще одно окно для ввода текста замены, а речь идет о замене текста из строчек текстового файла
Так и в скрипте и в кнопке фигурируют строки как для поиска, так и для замены. В чём проблема?
shveicar писал(а):только, во втором случае приходится в ручную менять двойные кавычки в теге, на одинарные, а - это крайне не удобно.
А как удобно? Чтобы автоматически определялось, ставить кавычки или нет? Или по умолчанию для искомой строки без кавычек, а для той, на которую производится замена, с?

Добавлено: Чт июл 21, 2011 22:33
shveicar
Наверно я чего - то не понимаю, Попытаюсь разобраться подробнее(выделяем группу файлов html) первый выделенный файл в списке - 1.html Cтрока для поиска

Код: Выделить всё

('flvpla1/player.swf','mplayer','640','380','9','000000')
строка для замены

Код: Выделить всё

"('%%FromFileArr%%','mplayer','640','380','9','000000')"
параметр

Код: Выделить всё

%%FromFileArr%%
- подразумевает вставку строки №1 из файла - filelist.txt и так далее, число строк и число выделенных html файлов совпадает(строки в filelist.txt все разные). Вариант с кнопкой -работает, вариант с окном выдает ошибку.(кавычки я пока не рассматриваю). По идее вариант с окном должен выглядеть так - выделяем группу html файлов filelist.txt лежит в той-же папке. жмем кнопку - появляется окно со строкой поиска, вводим желаемый тег (в данном случае

Код: Выделить всё

flvpla1/player.swf
) нажимаем ок, и все совпадения во всех выделенных html файлах ( при условии одно совпадение в одном файле) меняются на значения из файла списка filelist.txt Если в каждом html файле например - два совпадения, тогда в параметрах кнопки стоит цифра2 (естественно что количество совпадений во всех html файлах одинаковое то есть 2), если три то 3. Ну вот, примерно такой вариант я имел ввиду.