Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты

Закрытая тема
Настройки темы
[Архив - Часть 1.3] AutoIt скрипты

Старожил


Сообщения: 250
Благодарности: 16

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 25-01-2008
Внимание!
Тема переведена в архивное состояние





(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравия желаю!
Простите если повторюсь,просто не нашёл(а может плохо искал).
Есть скрипт ,который архивирует,а потом с помощью встроенного в винду ftp клиента отсылает архив восвояси.так вот хотелось бы перехватывать сообщения ftp и писать их в лог ,что бы занать что и когда
как это можно сделать?

-------
Scio me, nihil scire


Отправлено: 11:54, 26-02-2007 | #231



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27
Цитата:
Если заметил, то перед чтением выходного потока StdoutRead($Pid) я добавил проверку на наличие данных в потоке StdoutRead ($foo,0,True) - это позволяет избежать подвисания окна AutoIT на время отсутствия выходных данных (об этом кстати сказано в справке к StdoutRead())...
Интересно, я если честно не обратил внимания, спасибо, пойду поправлю свой пример

Цитата:
так пробовал?
Нет, но мне уже на офф. форуме подсказали, нужно точно также но чтобы $hwnd = 0 был как первый параметр, иначе не работает (не знаю даже почему, вроде никак не должо влиять) - но всё же биг сенкс!

13ghost
Цитата:
перехватывать сообщения ftp и писать их в лог
Если это консольная утилита, то попробуй применить методы из примера для архивирования тут.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 22:00, 26-02-2007 | #232


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Creat0R
завтра попробую

-------
Scio me, nihil scire


Отправлено: 23:28, 26-02-2007 | #233


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27
Цитата:
так вот второй параметр (после имени инициатора) отвечает за тип подключения
Где именно мне в функции поравить 0 на 1 (это я ещё по поводу _InetGetSource() )?

Вот исходник функции:
(если не трудно, укажи где именно нужно менять)

Код: Выделить весь код
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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 04:49, 28-02-2007 | #234


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Код: Выделить весь код
Local $ai_IO = DllCall($h_DLL, 'int', 'InternetOpen', 'str', "AutoIt v3", 'int', 1, 'int', 0, 'int', 0, 'int', 0)
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:05, 28-02-2007 | #235


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27
Спасибо!




Такой вопрос по регулярным вырожениям - Как возможно получить определённый текст, который находится между двумя заранее известными символами?

Т.е к примеру, имеем такой текст:

Код: Выделить весь код
test1*этот текст нам нужен*test2
Заранее известны только разделители *, и нужно бы получить всё что между ними... я конечно могу использовать разного рода ухитрения со StringSplit, StringInStr, StringLeft...Right и т.д, но мне хотелось бы узнать как это можно достичь регулярными выражениями, и тем более, что подобные методы будут не очень надёжны.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 07:33, 28-02-2007 | #236


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
что-то подобное я делал в скрипте "расцветки":
Код: Выделить весь код
$str='test1*этот текст нам нужен*test2'
$chr='\*'
MsgBox (0,'Результат',StringRegExpReplace ($str,'^.*' & $chr & '(.*)' & $chr & '.*$','\1'))
PS: естественно, разделителей должно быть два
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:40, 28-02-2007 | #237


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27
Я имел ввиду получить текст между двумя символами, но они могут быть разные, к примеру если этот метод использовать так (как функию):

Код: Выделить весь код
$String = '1теперь нам нужен этот текст2'

MsgBox(0, "", _StringInside($String, "1", "2"))

Func _StringInside($String, $Start, $End)
	Return StringRegExpReplace($String, '^.*\' & $Start & '(.*)\' & $End & '.*$', '\1')
EndFunc
То результат будет не верный, нужно как то получать текст между двумя заданными символами, и неважно какие символы, или где они стоят, если между ними ничего нет, то можно возвращать весь $String...

Добавлено:
Во! сделал, правда я не уверен что учёл все символы...

Код: Выделить весь код
$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
Спасибо!

Хм, но теперь другая проблема - если более чем два совпадения символов, то возвращается последнее межсимвольное значение, а нужно чтобы в таком случае возвращалось первое совпадение (с левой стороны, т.е сначала).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 28-02-2007 в 10:27.


Отправлено: 10:18, 28-02-2007 | #238


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27
Цитата:
вот еще вариант
Во! это то что нужно (правда Local там лишних два раза встречается ), спасибо большое (см. ниже полный пример для подобной функции, я её уже переименовал )...

Поздравляю со статусом Ветерана!

Код: Выделить весь код
$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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 11:56, 28-02-2007 | #240



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 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




 
Переход