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

Добавлено: Ср окт 06, 2010 20:34
Andrey_A
Скрипт, интерфейс очень понравился! Сразу же стал экспериментировать на 40 файлах в которых давно хотел один текст заменить другим, но жалко было время. Скрипт сработал отлично!!! Вот несколько наблюдений и коментариев
1. Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK. Это окно статично закрывает почти весь экран.
2. Пришлось 80 раз жать на ENTER
- В связи с этим можно ли сделать параметр, где была бы возможность не показывать это окно? текст, который показывается, я и так прекрасно знаю...
- Взамен показа окна можно ввести вывод окна или запись в тестовый файл - Файл\Окно-отчёта. В каком файле в какой строке была произведена замена... Количество замен в файле, во всех файлах
- И можно ввести пункт создания бэкапа и отката
Если и показывать окно, то не весь текст, а только часть, там где найден нужный текст и в каких строках...

Добавлено: Ср окт 06, 2010 20:48
Loopback
Andrey_A писал(а):Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK
Этого окна быть вообще не должно, оно было для отладки, забыл убрать. Сейчас всё исправлено.
Andrey_A писал(а): И можно ввести пункт создания бэкапа и отката
Насчет отката - честно говоря не очень хочется делать, а простой бекап можно.

Добавлено: Ср окт 06, 2010 20:48
Flasher
Loopback писал(а):Центровка теперь должна работать правильно при любой высоте таскбара.
Тогда ничего не пойму..
Loopback писал(а):Ctrl+Enter добавил.
Спасибо. Кнопка ОК активировалась также. :)
Loopback писал(а):Насчет отката - честно говоря не очень хочется делать, а простой бекап можно.
Только с параметром. Он далеко не всегда нужен.

Добавлено: Ср окт 06, 2010 21:01
Flasher
Rodny писал(а):По идее, должны же быть какие-нибудь ini-специфические функции.
Ага, есть такие. :wink:

Добавлено: Ср окт 06, 2010 21:07
Loopback
Обновил пост. Добавил простенький бэкап, включается галкой внизу окна.

Добавлено: Ср окт 06, 2010 21:14
Flasher
Просьба остальных отписать по части центровки по высоте.
У меня даже расстояние от вызванного таскбара до окна меньше, чем от верха окна до края экрана, не говоря уж о независимой от таскбара центровки.

Loopback
Добавь в комментарий к пункту 2 информацию о значении 0, а то некоторые такую классную фичу проморгают. :wink:
И название заголовка сменить не забудь.

Добавлено: Ср окт 06, 2010 22:52
Lev
Ну, в порядке баловства накидал скриптик.
Обработку папок не приделывал.
Заодно будете WSO осваивать :)

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

'replaceinfiles.vbs
'Lev

'Параметры вызова (почему-то у меня без wscript.exe барахлит %S)
'wscript.exe "Диск:\Путь к скрипту\replaceinfiles.vbs"
'%P%S


Dim ts
Set args = WScript.Arguments

On Error Resume Next
Dim wso
Set wso = CreateObject("Scripting.WindowSystemObject")
If Err.Number <> 0 Then
	Msgbox "Пожалуйста установите WindowSystemObject!" & vbCrLf & "Вы можете загрузить WSO с http://www.veretennikov.org/WSO/default.aspx"
	WScript.Quit 1
End If
On Error GoTo 0

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim re
Set re = New RegExp

Dim form0
Set form0 = wso.CreateForm(0, 0, 394, 288)
With form0
  .Text = "Заменялка"
  .CenterControl()
End With

WScript.ConnectObject form0, "form0_"
Set label1 = form0.TextRect(10, 10, 55, 25, "Найти:")
Set edit2 = form0.CreateEdit(70, 10, 310, 100, wso.Translate("ES_MULTILINE"))
Set label3 = form0.TextRect(10, 115, 55, 25, "Заменить")
Set edit4 = form0.CreateEdit(70, 115, 310, 100, wso.Translate("ES_MULTILINE"))
Set button5 = form0.CreateButton(305, 220, 75, 25, "Поехали")
WScript.ConnectObject button5, "button5_"

form0.Show()
wso.Run()

Function button5_OnClick(Sender)
    re.IgnoreCase = True
    re.Global = True
    re.Multiline = True
      
    re.Pattern = "([.\\()/|[^$+*\]<>{}?])"'экранируем спецсимволы, может какие забыл, может лишние вписал
    pt=re.Replace(edit2.Text, "\$1")
    re.Pattern = pt
  For Each f In args 
    If fso.GetFile(f).Size<>0 Then
      s12 = fso.GetBaseName(f) & ".bak" 
      fso.CopyFile f, s12 
      Set ts = fso.GetFile(f).OpenAsTextStream(1, 0) 
      st=ts.ReadAll 
      ts.Close 
      Set ts = fso.GetFile(f).OpenAsTextStream(2, 0) 
      ts.Write(re.Replace(st, edit4.Text)) 
      ts.Close 
     End If
  Next
  MsgBox "Готово"
End Function

Set wso = Nothing
Set fso = Nothing
Set re = Nothing

'Generated with Lev's VBS pack for HiAsm, www.hiasm.com

Добавлено: Ср окт 06, 2010 23:29
Andrey_A
Lev Скрипт выдаёт ошибку

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

Сценарий:	C:\Total Commander Image\Scripts\TextWork\FileBuffer.vbs
Строка:	54
Символ:	35
Ошибка:	Предполагается наличие инструкции
Код:	800A0400
Источник: 	Ошибка компиляции Microsoft VBScript
а что касается au3 - супер! Единственное при 0 выходит окошко с цифрами, оно само небольшое, а название окна длинное, я бы его заменил на "Выбор к-ва полей поиска" - влазит и понятно...

Добавлено: Ср окт 06, 2010 23:32
Flasher
Andrey_A писал(а):а название окна длинное, я бы его заменил на "Выбор к-ва полей поиска" - влазит и понятно.
Мой предыдущий пост снизу видел? Найди те строки в скрипте по Ctrl+F и замени, делов-то. :wink:

Добавлено: Ср окт 06, 2010 23:37
Rodny
Flasher писал(а):Ага, есть такие.
Да-да, вот как раз про эту я и говорил: "народ построчно файлы перебирает" :wink:
Ну, на данный момент методы INIReadSection, INIWriteSection из Helper-а позволяют свести это всё к паре строчек, спасибо Volniy.

Добавлено: Чт окт 07, 2010 00:08
Lev
Поправил, в последний момент вписал проверку на пустой файл и не запустил тестирования, а в vbs оказалось GoTo не работает :)

Добавлено: Чт окт 07, 2010 13:28
Andrey_A
Lev скрипт выдаёт следующее:

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

Please install WindowSystemObject!
You can download WSO from http://cs.usu.edu.ru/home/abv/
адрес у меня не отвечает. Подскажи нормальную ссылку, где можно было бы скачать то, что нужно для этого скрипта

Добавлено: Чт окт 07, 2010 13:32
Flasher
Есть такое волшебное слово "гуглЬ". :mrgreen: Install (архив, help_rus).

Добавлено: Чт окт 07, 2010 13:56
Flasher
В общем-то, скрипт Loopback уже доведён до ума и, как мне кажется, удался не на шутку. Я бы, конечно, мог ещё нагрузить всякими примочками, но, полагаю, на этом достаточно, пусть остальное будет само по себе, как отдельная реализация. Получился полезнейший инструмент! По системе Top Gear место ему в морозильном сейфе! Изображение
Что тут ещё скажешь, большое человеческоеИзображение

Добавлено: Чт окт 07, 2010 15:00
Andrey_A
Присоединяюсь,Loopback, большое спасибо за скрипт!!!
Flasher отдельная благодарность за ссылки. Пол ночи искал скачивал всё что связано с WSO, накачал бог знает что, а тут оказалось .dll - всё работает!!! :D