Замена кусков текста в выделенных файлах
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Скрипт, интерфейс очень понравился! Сразу же стал экспериментировать на 40 файлах в которых давно хотел один текст заменить другим, но жалко было время. Скрипт сработал отлично!!! Вот несколько наблюдений и коментариев
1. Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK. Это окно статично закрывает почти весь экран.
2. Пришлось 80 раз жать на ENTER
- В связи с этим можно ли сделать параметр, где была бы возможность не показывать это окно? текст, который показывается, я и так прекрасно знаю...
- Взамен показа окна можно ввести вывод окна или запись в тестовый файл - Файл\Окно-отчёта. В каком файле в какой строке была произведена замена... Количество замен в файле, во всех файлах
- И можно ввести пункт создания бэкапа и отката
Если и показывать окно, то не весь текст, а только часть, там где найден нужный текст и в каких строках...
1. Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK. Это окно статично закрывает почти весь экран.
2. Пришлось 80 раз жать на ENTER
- В связи с этим можно ли сделать параметр, где была бы возможность не показывать это окно? текст, который показывается, я и так прекрасно знаю...
- Взамен показа окна можно ввести вывод окна или запись в тестовый файл - Файл\Окно-отчёта. В каком файле в какой строке была произведена замена... Количество замен в файле, во всех файлах
- И можно ввести пункт создания бэкапа и отката
Если и показывать окно, то не весь текст, а только часть, там где найден нужный текст и в каких строках...
Этого окна быть вообще не должно, оно было для отладки, забыл убрать. Сейчас всё исправлено.Andrey_A писал(а):Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK
Насчет отката - честно говоря не очень хочется делать, а простой бекап можно.Andrey_A писал(а): И можно ввести пункт создания бэкапа и отката
Тогда ничего не пойму..Loopback писал(а):Центровка теперь должна работать правильно при любой высоте таскбара.
Спасибо. Кнопка ОК активировалась также.Loopback писал(а):Ctrl+Enter добавил.
Только с параметром. Он далеко не всегда нужен.Loopback писал(а):Насчет отката - честно говоря не очень хочется делать, а простой бекап можно.
Обновил пост. Добавил простенький бэкап, включается галкой внизу окна.
Просьба остальных отписать по части центровки по высоте.
У меня даже расстояние от вызванного таскбара до окна меньше, чем от верха окна до края экрана, не говоря уж о независимой от таскбара центровки.
Loopback
Добавь в комментарий к пункту 2 информацию о значении 0, а то некоторые такую классную фичу проморгают.
И название заголовка сменить не забудь.
У меня даже расстояние от вызванного таскбара до окна меньше, чем от верха окна до края экрана, не говоря уж о независимой от таскбара центровки.
Loopback
Добавь в комментарий к пункту 2 информацию о значении 0, а то некоторые такую классную фичу проморгают.
И название заголовка сменить не забудь.
Ну, в порядке баловства накидал скриптик.
Обработку папок не приделывал.
Заодно будете WSO осваивать :)
Обработку папок не приделывал.
Заодно будете 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
Последний раз редактировалось Lev Чт окт 07, 2010 15:12, всего редактировалось 2 раза.
Lev Скрипт выдаёт ошибку
а что касается au3 - супер! Единственное при 0 выходит окошко с цифрами, оно само небольшое, а название окна длинное, я бы его заменил на "Выбор к-ва полей поиска" - влазит и понятно...
Код: Выделить всё
Сценарий: C:\Total Commander Image\Scripts\TextWork\FileBuffer.vbs
Строка: 54
Символ: 35
Ошибка: Предполагается наличие инструкции
Код: 800A0400
Источник: Ошибка компиляции Microsoft VBScriptДа-да, вот как раз про эту я и говорил: "народ построчно файлы перебирает"Flasher писал(а):Ага, есть такие.
Ну, на данный момент методы INIReadSection, INIWriteSection из Helper-а позволяют свести это всё к паре строчек, спасибо Volniy.
Lev скрипт выдаёт следующее:
адрес у меня не отвечает. Подскажи нормальную ссылку, где можно было бы скачать то, что нужно для этого скрипта
Код: Выделить всё
Please install WindowSystemObject!
You can download WSO from http://cs.usu.edu.ru/home/abv/В общем-то, скрипт Loopback уже доведён до ума и, как мне кажется, удался не на шутку. Я бы, конечно, мог ещё нагрузить всякими примочками, но, полагаю, на этом достаточно, пусть остальное будет само по себе, как отдельная реализация. Получился полезнейший инструмент! По системе Top Gear место ему в морозильном сейфе!
Что тут ещё скажешь, большое человеческое
Что тут ещё скажешь, большое человеческое
