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

Компьютерный форум 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

 

Аватара для Creat0R

Must AutoIt


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

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


Sancho111
Цитата:
Error Uknown Function name
Какая у тебя версия AutoIt? и на сколько я помню, должна быть поддержка AutoIt3x...

Установи последнюю версию.

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

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

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:08, 16-03-2007 | #281



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

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


Аватара для Creat0R

Must AutoIt


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

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


Sanja Alone
Цитата:
Можно. Представь себе координатную ось с 21 координатой (10 отрицательных, ноль и 10 положительных)
О, спасибо (как это я пропустил твой пост)...

Сделал функцию для установки скорости произношения речи, но не уверен что это правильно:

Код: Выделить весь код
Func _SetSpeachSpeed($Speed)
    If $Speed < 1 Or $Speed > 21 Then Return SetError(1)
    Local $SetRate
    Switch $Speed
        Case 1 To 11
            $SetRate = 4294967280 + ($Speed+5)
            If $Speed = 11 Then $SetRate = 0
        Case 12 To 21
            $SetRate = $Speed-11
    EndSwitch
    Return RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices", "DefaultTTSRate", "REG_DWORD", $SetRate)
EndFunc
P.S
Что то никак не соображу как использовать Regshot.

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

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

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


Отправлено: 12:40, 16-03-2007 | #282


Старожил


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

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


Creat0R
Цитата:
Что то никак не соображу как использовать Regshot.
Жмакаешь кнопку 1 снимок, потом делаешь изменения в системе (например ставишь галочку в или двигаешь ползунок), затем жмакаешь 2 снимок, затем сравнить.
Он сравнит состояния реестра до и после и выдаст изменения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:12, 16-03-2007 | #283


Аватара для Creat0R

Must AutoIt


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

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


VelDmi
Цитата:
Жмакаешь кнопку 1 снимок, потом делаешь изменения в системе (например ставишь галочку в или двигаешь ползунок), затем жмакаешь 2 снимок, затем сравнить.
Он сравнит состояния реестра до и после и выдаст изменения.
Ну я как бы прочитал Readme, но спасибо всё ровно... просто я не совсем понял как мне это поможет узнать промежуточные значения для скорости произношения речи.

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

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

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

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


Отправлено: 13:39, 16-03-2007 | #284


Аватара для Sanja Alone

Ищу Человека…


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

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


Creat0R
Цитата:
как мне это поможет узнать промежуточные значения для скорости произношения речи
Пуск -> Панель управления -> Речь -> Скорость голоса. Двигаем ползунок и смотрим regshot-ом. Хотя я тебе и так уже все возможные значения выдал интуитивным методом

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:23, 16-03-2007 | #285


Аватара для Creat0R

Must AutoIt


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

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


Sanja Alone
Цитата:
Пуск -> Панель управления -> Речь -> Скорость голоса.
Ах вот оно где находится...

Цитата:
Хотя я тебе и так уже все возможные значения выдал интуитивным методом
Да, спасибо, а я видимо подобно интуитивным методом подобрал для этого функцию

P.S
Кстати на её (функции) основе, можно также в своих скриптах строить подобный ползунок .

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

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

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


Отправлено: 15:38, 16-03-2007 | #286


Ветеран


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

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


написал скрипт, который сперва пишет огромный файл, а потом его же считывает, и проверяет, считалось то же, что записалось или нет?
работает, но медленно, видимо, за счет сравнения строк. Как бы ускорить? что писать в файл, значения абсолютно не имеет.

Код: Выделить весь код
$filename = "now" & @MIN & @SEC & "temp"

$fil = FileOpen( $filename, 2)
$kb = ""

For $i = 1 to 1024 Step 1
	$kb &= "1"
Next

$Mb = ""

For $i = 1 to 1024 Step 1
	$Mb &= $kb & @CRLF
Next

#region --- GuiBuilder code Start ---
; Script generated by AutoBuilder 0.6 Prototype

#include <GuiConstants.au3>

GuiCreate("MyGUI", 147, 45,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
$btStop = GuiCtrlCreateButton("Stop writing!", 10, 10, 130, 30)
GuiSetState()

$volume = 0
Do
    $msg = GuiGetMsg()
	Select
		Case ($msg = $GUI_EVENT_CLOSE) or ($msg = $btStop)
			ExitLoop
		Case Else
		;;;
	EndSelect
	$err= FileWriteLine( $fil, $Mb)
	$volume += 1
Until ($err <> 1) 
FileClose($fil)

GUIDelete()

GuiCreate("MyGUI", 147, 45,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
$btStop = GuiCtrlCreateButton("verifyin'...", 10, 10, 130, 30)
GuiSetState()
$fil = FileOpen( $filename,0 )

$verifyfailed = 0
$verified = 0
While 1
	$msg = GuiGetMsg()
	if  ($msg = $GUI_EVENT_CLOSE) or ($msg = $btStop) Then ExitLoop
	for $k = 1 to 1024 
		$line = FileReadLine($fil)
		If @error = -1 Then ExitLoop
		if $line <> $kb then 
			$verifyfailed = 1
			SetError(1)
		EndIf
		
	Next
	If @error = -1 Then ExitLoop
	$verified += 1	
	
Wend

GUIDelete()
MsgBox(0,"Verify result", "Volume: " & ($volume) & "Mb" & @CRLF & "Verified:" & $verified & "Mb" & @CRLF  & "Verify failed: " & ($verifyfailed = 1))
	
FileClose($fil)
FileDelete($filename)

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 08:02, 19-03-2007 | #287


Аватара для Creat0R

Must AutoIt


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

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


Dirk Diggler
Цитата:
Как бы ускорить?
Ну во-первых, желательно убрать из второго цикла для гуи $msg = GuiGetMsg() - т.к в GuiGetMsg() встроена задержка в 10 мс.

И нет необходимости строить новый гуи и удалять старый, можно использовать и тот же. А для проверки нажатия кнопки, можно использовать метод реагирования на событие (On Event Mode)...

И ещё, зачем SetError(1)? это нигде не используется, или я что-то упустил? Просто быстрее делать:
If .. Then ...

чем:

If ... Then
...
EndIf


Вот немного переделал пример:

Код: Выделить весь код
$filename = "now" & @MIN & @SEC & "temp"

$fil = FileOpen( $filename, 2)
$kb = ""

For $i = 1 to 1024 Step 1
    $kb &= "1"
Next

$Mb = ""

For $i = 1 to 1024 Step 1
    $Mb &= $kb & @CRLF
Next

#include <GuiConstants.au3>
GuiCreate("MyGUI", 147, 45,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
$btStop = GuiCtrlCreateButton("Stop writing!", 10, 10, 130, 30)
GuiSetState()

$volume = 0
Do
    $msg = GuiGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE Or $msg = $btStop
            Opt("GuiOnEventMode", 1)
            FileClose($fil)
            $fil = FileOpen( $filename, 0)
            $verifyfailed = 0
            $verified = 0
            $ExitLoop = 0
            GUICtrlSetData($btStop, "Verifyin'...")
            GUICtrlSetOnEvent($btStop, "Verifyin")
            While 1
                If $ExitLoop = 1 Then ExitLoop
                For $k = 1 To 1024
                    $line = FileReadLine($fil)
                    If @error = -1 Then ExitLoop
                    If $line <> $kb Then $verifyfailed = 1
                Next
                If @error = -1 Then ExitLoop
                $verified += 1
            Wend
            ExitLoop
    EndSelect
    $err = FileWriteLine($fil, $Mb)
    $volume += 1
Until ($err <> 1)

 GUIDelete()

MsgBox(0,"Verify result", "Volume: " & ($volume) & "Mb" & @CRLF & "Verified: " & $verified & "Mb" & @CRLF  & "Verify failed: " & ($verifyfailed = 1))

    FileClose($fil)
FileDelete($filename)

Func Verifyin()
    $ExitLoop = 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


Отправлено: 10:09, 19-03-2007 | #288


Ветеран


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

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


ды вот. эти все потери несущественны по сравнению с теми, что происходят на проверке равенства строк. Вот как бы придумать алгоритм
какой-нть хитрый, ну типа сделать AND по каждому отдельному символу считанной строки и сравнить результат с одим символом?


Цитата:
И ещё, зачем SetError(1)?
забыл после него ExitLoop

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 16:34, 19-03-2007 | #289


Аватара для Creat0R

Must AutoIt


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

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


Dirk Diggler
Цитата:
делать AND по каждому отдельному символу считанной строки и сравнить результат с одим символом?
Так это же будет намного медленнее(?)...

Я если честно не вникаю в затею, почему бы не записать временный массив при создании файла, и потом перечитать весь файл в другой массив, и заием сравнивать оба массива по одному элементу за раз? но опять же, я не вижу смысл всего этого, поэтому немного трудно помочь найти решение .

Цитата:
забыл после него ExitLoop
Вот я в начале и хотел в исправленный пример его добавить, но не был уверен что нужно прирываь цикл при первом различии строк.

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

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

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


Отправлено: 16:51, 19-03-2007 | #290



Компьютерный форум 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




 
Переход