View previous topic :: View next topic |
Author |
Message |
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Wed Oct 06, 2010 20:34 Post subject: |
|
|
Скрипт, интерфейс очень понравился! Сразу же стал экспериментировать на 40 файлах в которых давно хотел один текст заменить другим, но жалко было время. Скрипт сработал отлично!!! Вот несколько наблюдений и коментариев
1. Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK. Это окно статично закрывает почти весь экран.
2. Пришлось 80 раз жать на ENTER
- В связи с этим можно ли сделать параметр, где была бы возможность не показывать это окно? текст, который показывается, я и так прекрасно знаю...
- Взамен показа окна можно ввести вывод окна или запись в тестовый файл - Файл\Окно-отчёта. В каком файле в какой строке была произведена замена... Количество замен в файле, во всех файлах
- И можно ввести пункт создания бэкапа и отката
Если и показывать окно, то не весь текст, а только часть, там где найден нужный текст и в каких строках... |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1290
|
(Separately) Posted: Wed Oct 06, 2010 20:48 Post subject: |
|
|
Andrey_A wrote: | Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK |
Этого окна быть вообще не должно, оно было для отладки, забыл убрать. Сейчас всё исправлено.
Andrey_A wrote: | И можно ввести пункт создания бэкапа и отката |
Насчет отката - честно говоря не очень хочется делать, а простой бекап можно. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Oct 06, 2010 20:48 Post subject: |
|
|
Loopback wrote: | Центровка теперь должна работать правильно при любой высоте таскбара. | Тогда ничего не пойму.. Loopback wrote: | Ctrl+Enter добавил. | Спасибо. Кнопка ОК активировалась также. Loopback wrote: | Насчет отката - честно говоря не очень хочется делать, а простой бекап можно. | Только с параметром. Он далеко не всегда нужен. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Oct 06, 2010 21:01 Post subject: |
|
|
Rodny wrote: | По идее, должны же быть какие-нибудь ini-специфические функции. | Ага, есть такие. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1290
|
(Separately) Posted: Wed Oct 06, 2010 21:07 Post subject: |
|
|
Обновил пост. Добавил простенький бэкап, включается галкой внизу окна. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Oct 06, 2010 21:14 Post subject: |
|
|
Просьба остальных отписать по части центровки по высоте.
У меня даже расстояние от вызванного таскбара до окна меньше, чем от верха окна до края экрана, не говоря уж о независимой от таскбара центровки.
Loopback
Добавь в комментарий к пункту 2 информацию о значении 0, а то некоторые такую классную фичу проморгают.
И название заголовка сменить не забудь. |
|
Back to top |
|
|
Lev
Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Wed Oct 06, 2010 22:52 Post subject: |
|
|
Ну, в порядке баловства накидал скриптик.
Обработку папок не приделывал.
Заодно будете WSO осваивать :)
Code: | '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 |
Last edited by Lev on Thu Oct 07, 2010 15:12; edited 2 times in total |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Wed Oct 06, 2010 23:29 Post subject: |
|
|
Lev Скрипт выдаёт ошибку Code: | Сценарий: C:\Total Commander Image\Scripts\TextWork\FileBuffer.vbs
Строка: 54
Символ: 35
Ошибка: Предполагается наличие инструкции
Код: 800A0400
Источник: Ошибка компиляции Microsoft VBScript |
а что касается au3 - супер! Единственное при 0 выходит окошко с цифрами, оно само небольшое, а название окна длинное, я бы его заменил на "Выбор к-ва полей поиска" - влазит и понятно... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Oct 06, 2010 23:32 Post subject: |
|
|
Andrey_A wrote: | а название окна длинное, я бы его заменил на "Выбор к-ва полей поиска" - влазит и понятно. | Мой предыдущий пост снизу видел? Найди те строки в скрипте по Ctrl+F и замени, делов-то. |
|
Back to top |
|
|
Rodny
Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Wed Oct 06, 2010 23:37 Post subject: |
|
|
Да-да, вот как раз про эту я и говорил: "народ построчно файлы перебирает"
Ну, на данный момент методы INIReadSection, INIWriteSection из Helper-а позволяют свести это всё к паре строчек, спасибо Volniy. |
|
Back to top |
|
|
Lev
Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Thu Oct 07, 2010 00:08 Post subject: |
|
|
Поправил, в последний момент вписал проверку на пустой файл и не запустил тестирования, а в vbs оказалось GoTo не работает :) |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Thu Oct 07, 2010 13:28 Post subject: |
|
|
Lev скрипт выдаёт следующее: Code: | Please install WindowSystemObject!
You can download WSO from http://cs.usu.edu.ru/home/abv/ |
адрес у меня не отвечает. Подскажи нормальную ссылку, где можно было бы скачать то, что нужно для этого скрипта |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Oct 07, 2010 13:56 Post subject: |
|
|
В общем-то, скрипт Loopback уже доведён до ума и, как мне кажется, удался не на шутку. Я бы, конечно, мог ещё нагрузить всякими примочками, но, полагаю, на этом достаточно, пусть остальное будет само по себе, как отдельная реализация. Получился полезнейший инструмент! По системе Top Gear место ему в морозильном сейфе!
Что тут ещё скажешь, большое человеческое |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Thu Oct 07, 2010 15:00 Post subject: |
|
|
Присоединяюсь,Loopback, большое спасибо за скрипт!!!
Flasher отдельная благодарность за ссылки. Пол ночи искал скачивал всё что связано с WSO, накачал бог знает что, а тут оказалось .dll - всё работает!!! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|