Страница 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
Добавлено: Сб июн 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 лежит в этой папке
А вот этот вариант я не учел. Для меня - он пожалуй самый удобный!

Еще раз - премного благодарен!
Добавлено: Чт июл 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
Код: Выделить всё
"('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')"
параметр
- подразумевает вставку строки №1 из файла - filelist.txt и так далее, число строк и число выделенных html файлов совпадает(
строки в filelist.txt все разные). Вариант с кнопкой -работает, вариант с окном выдает ошибку.(кавычки я пока не рассматриваю). По идее вариант с окном должен выглядеть так - выделяем группу html файлов filelist.txt лежит в той-же папке. жмем кнопку - появляется окно со строкой поиска, вводим желаемый тег (в данном случае
) нажимаем ок, и все совпадения во всех выделенных html файлах ( при условии одно совпадение в одном файле) меняются на значения из файла списка filelist.txt Если в каждом html файле например - два совпадения, тогда в параметрах кнопки стоит цифра2 (естественно что количество совпадений во всех html файлах одинаковое то есть 2), если три то 3. Ну вот, примерно такой вариант я имел ввиду.