|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты |
|
[Архив - Часть 1.3] AutoIt скрипты
|
Старожил Сообщения: 250 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. Помогите пожалуйста. Нужен маленький скриптик для решения некоторых рутинных задачь. Вот что нужно сделать последовательно: 1) в папке DIR1 находим и удаляем файлы в названии которых присутствует text_1 2) в папке DIR2 находим xxx.sif и удаляем строки, в которых присутствует text_1 3) в папке DIR3 находим xxx.inf и добавляем в его секцию [XXX] несколько строчкек (text_2, text_3, ..., text_n) 4) в папке DIR4 находим yyy.inf ищем в его секции [YYY] text_4 и заменяем его на text_5 5) сохраняем все изменения и выводим отчёт о проделанной работе :-) Заранее благодарен. |
|
Отправлено: 05:05, 03-12-2006 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Здравия желаю!
Простите если повторюсь,просто не нашёл(а может плохо искал). Есть скрипт ,который архивирует,а потом с помощью встроенного в винду ftp клиента отсылает архив восвояси.так вот хотелось бы перехватывать сообщения ftp и писать их в лог ,что бы занать что и когда как это можно сделать? |
------- Отправлено: 11:54, 26-02-2007 | #231 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
![]() Цитата:
13ghost Цитата:
|
|||
------- Отправлено: 22:00, 26-02-2007 | #232 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Creat0R
завтра попробую |
------- Отправлено: 23:28, 26-02-2007 | #233 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
Вот исходник функции: (если не трудно, укажи где именно нужно менять) Func _INetGetSource($s_URL, $s_Header = '') If StringLeft($s_URL, 7) <> 'http://' And StringLeft($s_URL, 8) <> 'https://' Then $s_URL = 'http://' & $s_URL Local $h_DLL = DllOpen("wininet.dll") Local $ai_IRF, $s_Buf = '' Local $ai_IO = DllCall($h_DLL, 'int', 'InternetOpen', 'str', "AutoIt v3", 'int', 0, 'int', 0, 'int', 0, 'int', 0) If @error Or $ai_IO[0] = 0 Then DllClose($h_DLL) SetError(1) Return "" EndIf Local $ai_IOU = DllCall($h_DLL, 'int', 'InternetOpenUrl', 'int', $ai_IO[0], 'str', $s_URL, 'str', $s_Header, 'int', StringLen($s_Header), 'int', 0x80000000, 'int', 0) If @error Or $ai_IOU[0] = 0 Then DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IO[0]) DllClose($h_DLL) SetError(1) Return "" EndIf Local $v_Struct = DllStructCreate('udword') DllStructSetData($v_Struct, 1, 1) While DllStructGetData($v_Struct, 1) <> 0 $ai_IRF = DllCall($h_DLL, 'int', 'InternetReadFile', 'int', $ai_IOU[0], 'str', '', 'int', 256, 'ptr', DllStructGetPtr($v_Struct)) $s_Buf &= StringLeft($ai_IRF[2], DllStructGetData($v_Struct, 1)) WEnd DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IOU[0]) DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IO[0]) DllClose($h_DLL) Return $s_Buf EndFunc |
|
------- Отправлено: 04:49, 28-02-2007 | #234 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 07:05, 28-02-2007 | #235 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Спасибо! Такой вопрос по регулярным вырожениям - Как возможно получить определённый текст, который находится между двумя заранее известными символами? Т.е к примеру, имеем такой текст: Заранее известны только разделители *, и нужно бы получить всё что между ними... я конечно могу использовать разного рода ухитрения со StringSplit, StringInStr, StringLeft...Right и т.д, но мне хотелось бы узнать как это можно достичь регулярными выражениями, и тем более, что подобные методы будут не очень надёжны. |
------- Отправлено: 07:33, 28-02-2007 | #236 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 08:40, 28-02-2007 | #237 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Я имел ввиду получить текст между двумя символами, но они могут быть разные, к примеру если этот метод использовать так (как функию): $String = '1теперь нам нужен этот текст2' MsgBox(0, "", _StringInside($String, "1", "2")) Func _StringInside($String, $Start, $End) Return StringRegExpReplace($String, '^.*\' & $Start & '(.*)\' & $End & '.*$', '\1') EndFunc Добавлено: Во! сделал, правда я не уверен что учёл все символы... $String = '_теперь нам нужен этот текст^' MsgBox(0, "", _StringInside($String, "_", "^")) Func _StringInside($String, $Start, $End) If StringRegExp($Start, "[\+\|\*\^\$\.\[\]\(\)\?\\]") Then $Start = "\" & $Start If StringRegExp($End, "[\+\|\*\^\$\.\[\]\(\)\?\\]") Then $End = "\" & $End Local $Ret = StringRegExpReplace($String, '^.*' & $Start & '(.*)' & $End & '.*$', '\1') If $Ret = "" Then Return $String Return $Ret EndFunc Хм, но теперь другая проблема - если более чем два совпадения символов, то возвращается последнее межсимвольное значение, а нужно чтобы в таком случае возвращалось первое совпадение (с левой стороны, т.е сначала). |
------- Последний раз редактировалось Creat0R, 28-02-2007 в 10:27. Отправлено: 10:18, 28-02-2007 | #238 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
ну... вот еще вариант, выбирающий фрагмент от первого вхождения 1-го символа до первого вхождения 2-го: $String = '_теперь нам нужен этот текст^' MsgBox(0, "", _StringInside($String, "_", "^")) Func _StringInside($String, $Start, $End) $Start = StringRegExpReplace ($Start, '([\+\|\*\^\$\.\[\]\(\)\?\\])', '\\\1') $End = StringRegExpReplace ($End, '([\+\|\*\^\$\.\[\]\(\)\?\\])', '\\\1') Local $pattern = '^[^' & $Start & ']*' & $Start & '([^' & $End & ']*)' & $End & '.*$' Return StringRegExpReplace($String, $pattern, '\1') EndFunc |
Последний раз редактировалось amel27, 28-02-2007 в 11:38. Отправлено: 11:29, 28-02-2007 | #239 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
![]() ![]() Поздравляю со статусом Ветерана! ![]() $String = 'Это нам не нужно. Нам нужен этот текст, :и этот тоже:, а :этот нам не нужен:' MsgBox(0, "", _StringMidle($String, ".", ",")) MsgBox(0, "", _StringMidle($String, ":", ":")) Func _StringMidle($String, $Start, $End) $Start = StringRegExpReplace ($Start, '([\+\|\*\^\$\.\[\]\(\)\?\\])', '\\\1') $End = StringRegExpReplace ($End, '([\+\|\*\^\$\.\[\]\(\)\?\\])', '\\\1') Local $pattern = '^[^' & $Start & ']*' & $Start & '([^' & $End & ']*)' & $End & '.*$' Return StringRegExpReplace($String, $pattern, '\1') EndFunc |
|
------- Отправлено: 11:56, 28-02-2007 | #240 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|