Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Замена кусков текста в выделенных файлах
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Wed Oct 06, 2010 20:34    Post subject: Reply with quote

Скрипт, интерфейс очень понравился! Сразу же стал экспериментировать на 40 файлах в которых давно хотел один текст заменить другим, но жалко было время. Скрипт сработал отлично!!! Вот несколько наблюдений и коментариев
1. Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK. Это окно статично закрывает почти весь экран.
2. Пришлось 80 раз жать на ENTER
- В связи с этим можно ли сделать параметр, где была бы возможность не показывать это окно? текст, который показывается, я и так прекрасно знаю...
- Взамен показа окна можно ввести вывод окна или запись в тестовый файл - Файл\Окно-отчёта. В каком файле в какой строке была произведена замена... Количество замен в файле, во всех файлах
- И можно ввести пункт создания бэкапа и отката
Если и показывать окно, то не весь текст, а только часть, там где найден нужный текст и в каких строках...
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1290

Post (Separately) Posted: Wed Oct 06, 2010 20:48    Post subject: Reply with quote

Andrey_A wrote:
Окно с тестом вылетает очень огромное, я даже не сразу догадался что где-то внизу есть кнопка OK

Этого окна быть вообще не должно, оно было для отладки, забыл убрать. Сейчас всё исправлено.
Andrey_A wrote:
И можно ввести пункт создания бэкапа и отката

Насчет отката - честно говоря не очень хочется делать, а простой бекап можно.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 20:48    Post subject: Reply with quote

Loopback wrote:
Центровка теперь должна работать правильно при любой высоте таскбара.
Тогда ничего не пойму..
Loopback wrote:
Ctrl+Enter добавил.
Спасибо. Кнопка ОК активировалась также. Smile
Loopback wrote:
Насчет отката - честно говоря не очень хочется делать, а простой бекап можно.
Только с параметром. Он далеко не всегда нужен.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 21:01    Post subject: Reply with quote

Rodny wrote:
По идее, должны же быть какие-нибудь ini-специфические функции.
Ага, есть такие. Wink
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1290

Post (Separately) Posted: Wed Oct 06, 2010 21:07    Post subject: Reply with quote

Обновил пост. Добавил простенький бэкап, включается галкой внизу окна.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 21:14    Post subject: Reply with quote

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

Loopback
Добавь в комментарий к пункту 2 информацию о значении 0, а то некоторые такую классную фичу проморгают. Wink
И название заголовка сменить не забудь.
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Wed Oct 06, 2010 22:52    Post subject: Reply with quote

Ну, в порядке баловства накидал скриптик.
Обработку папок не приделывал.
Заодно будете 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
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Wed Oct 06, 2010 23:29    Post subject: Reply with quote

Lev Скрипт выдаёт ошибку
Code:
Сценарий:   C:\Total Commander Image\Scripts\TextWork\FileBuffer.vbs
Строка:   54
Символ:   35
Ошибка:   Предполагается наличие инструкции
Код:   800A0400
Источник:    Ошибка компиляции Microsoft VBScript


а что касается au3 - супер! Единственное при 0 выходит окошко с цифрами, оно само небольшое, а название окна длинное, я бы его заменил на "Выбор к-ва полей поиска" - влазит и понятно...
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 23:32    Post subject: Reply with quote

Andrey_A wrote:
а название окна длинное, я бы его заменил на "Выбор к-ва полей поиска" - влазит и понятно.
Мой предыдущий пост снизу видел? Найди те строки в скрипте по Ctrl+F и замени, делов-то. Wink
Back to top
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Wed Oct 06, 2010 23:37    Post subject: Reply with quote

Flasher wrote:
Ага, есть такие.
Да-да, вот как раз про эту я и говорил: "народ построчно файлы перебирает" Wink
Ну, на данный момент методы INIReadSection, INIWriteSection из Helper-а позволяют свести это всё к паре строчек, спасибо Volniy.
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Thu Oct 07, 2010 00:08    Post subject: Reply with quote

Поправил, в последний момент вписал проверку на пустой файл и не запустил тестирования, а в vbs оказалось GoTo не работает :)
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Oct 07, 2010 13:28    Post subject: Reply with quote

Lev скрипт выдаёт следующее:
Code:
Please install WindowSystemObject!
You can download WSO from http://cs.usu.edu.ru/home/abv/

адрес у меня не отвечает. Подскажи нормальную ссылку, где можно было бы скачать то, что нужно для этого скрипта
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Oct 07, 2010 13:32    Post subject: Reply with quote

Есть такое волшебное слово "гуглЬ". Mr. Green Install (архив, help_rus).
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Oct 07, 2010 13:56    Post subject: Reply with quote

В общем-то, скрипт Loopback уже доведён до ума и, как мне кажется, удался не на шутку. Я бы, конечно, мог ещё нагрузить всякими примочками, но, полагаю, на этом достаточно, пусть остальное будет само по себе, как отдельная реализация. Получился полезнейший инструмент! По системе Top Gear место ему в морозильном сейфе!
Что тут ещё скажешь, большое человеческое
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Oct 07, 2010 15:00    Post subject: Reply with quote

Присоединяюсь,Loopback, большое спасибо за скрипт!!!
Flasher отдельная благодарность за ссылки. Пол ночи искал скачивал всё что связано с WSO, накачал бог знает что, а тут оказалось .dll - всё работает!!! Very Happy
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
Page 5 of 9

 
Jump to:  
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