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

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

 

Аватара для borzoy

Пользователь


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

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


Creat0R
Цитата:
Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме).
Видимо Модераторы плохо знают правила раз сами их не знают. Сделал как и написано было тему [autoit]Fraps и Punpad Shell4 но какой то модератор удалил эту тему!!!

Отправлено: 19:12, 27-01-2007 | #171



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

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


Аватара для jameszero

Модератор


Moderator


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

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


borzoy
Я отправил вам оповещение, что ваша тема [autoit] Fraps и Punpad Shell4, с просьбой помочь создать скрипт, перенесена в созданную вами же тему Помогите с тихой установкой Fraps и Runpad Shell, в которой уже начато обсуждение.
Зачем создавать одинаковые темы? ОПК - пункт 2.1
(Тема переименована в [autoit] Fraps и Runpad Shell, ни один пост не удалён)

-------
RuntimePack официальный сайт
Политика ограниченного использования программ для всех редакций Windows
--
мои аддоны в облаке

Не было печали, апдейтов накачали.


Последний раз редактировалось jameszero, 29-01-2007 в 09:44.


Отправлено: 00:39, 28-01-2007 | #172


Аватара для Creat0R

Must AutoIt


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

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


В AutoIt'е плохо (а точнее не корректно) работает функция FileDelete - например если написать её так:

Код: Выделить весь код
FileDelete(@TempDir & "\")
То в папке @TempDir будут удалены все файлы (не папки), т.е если я укажу файл для удаления в виде переменной, и каким то образом эта переменная окажется пуста (""), то может произойти нежеланная катастрофа - будьте очень остарожны, я на днях попал на эту удочку (правда к счастью у меня был бекап уалившихся файлов).

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

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

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


Отправлено: 18:44, 29-01-2007 | #173


Пользователь


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

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


Creat0R
Цитата:
В AutoIt'е плохо (а точнее не корректно) работает функция FileDelete
Здесь, если даже не включать проверку на существование файла, то (в случае с пустой переменной или отсутствием файла) скрипт завершиться с ошибкой, но ничего удалено не будет!
Думаю всё же, такой способ надёжней в плане безопасности, чем мучаться и придумывать разные хитрости, пытаясь исправить баг AutoIt'а.
Код: Выделить весь код
Dim $fso
;~ Создание объекта
$fso = ObjCreate("scripting.filesystemobject")

;~ Удаление файла
Func DeleteFile($FileSpec)
If $fso.FileExists($FileSpec) Then
	$fso.DeleteFile($FileSpec, True)
EndIf
EndFunc

;~ Удаление папки
Func DeleteFolder($FolderSpec)
If $fso.FolderExists($FolderSpec) Then
	$fso.DeleteFolder($FolderSpec, True)
EndIf
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:28, 30-01-2007 | #174


Аватара для Creat0R

Must AutoIt


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

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


Diamond
Да, это неплохой способ, спасибо, возьмём его пожалуй в арсенал функции аутоита




Я что-то не нашёл функции, которая проверяла бы данное число на чётность/не чётность, и решил её сам сделать (понадобилась сея функция), но не уверен что это правильное решение, может уже есть подобная функция, или у кого то есть более универсальное предложение?

Код: Выделить весь код
$iNumber = 2075674

If _IsEven($iNumber) Then
    MsgBox(64, "Even check", "The given number <" & $iNumber & "> is an Even number")
Else
    MsgBox(64, "Even check", "The given number <" & $iNumber & "> is not an Even number (it is Odd)")
EndIf

Func _IsEven($NumString)
    If $NumString < 1 Then
        $NumStrArr = StringSplit($NumString, ".")
        If IsArray($NumStrArr) And $NumStrArr[0] > 1 Then $NumString = $NumStrArr[2]
    EndIf
    If IsFloat($NumString / 2) Then
        Return 0
    Else
        Return 1
    EndIf
EndFunc
.........
И ещё, заметил вроде ещё багу в аутоите, проверить очень просто:

Код: Выделить весь код
MsgBox(0, "", 0.00001)
Получаем 1e-005 - и это так должно быть? я понимаю что можно заключить в кавычки, и тогда будет отображать дословно, но просто интересно, почему это происходит?

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

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

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


Отправлено: 06:38, 04-02-2007 | #175


Googler


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

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


Creat0R
Привет, на самом деле все гораздо проще:
Код: Выделить весь код
Func _IsEven ($num)
    If Mod($num,2)=0 Then
        Return 1
    Else
        Return 0
    EndIf
EndFunc
...хотя твои манипуляции с точкой наводят на мысль что обычной четности тебе мало (имеет смысл только для целых чисел).
Цитата:
И ещё, заметил вроде ещё багу в аутоите
Это не баг, это фича. ...Это разное представление одного числа, поэтому все вполне корректно.
Для однозначного представления используй StringFormat:
Код: Выделить весь код
MsgBox (0,'',StringFormat('%.5f',0.00001))

Последний раз редактировалось amel27, 04-02-2007 в 09:22.

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

Отправлено: 07:18, 04-02-2007 | #176


Googler


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

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


Creat0R
Diamond


Красивый способ для FileDelete с форума поддержки:
Код: Выделить весь код
Func _FileDelete ($file)
    If Not StringInStr(FileGetAttrib($file),'D') Then
        FileDelete($file)
    EndIf
EndFunc

Отправлено: 08:29, 04-02-2007 | #177


Пользователь


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

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


Подскажите, как с помощью WinApi поменять частоту обновления экрана?
В интернете есть множество примеров с использованием библиотеки: user32.dll функция: ChangeDisplaySettingsA, но как реализовать это в AutoIt совершенно не представляю. Очень надо!!!

Отправлено: 20:34, 04-02-2007 | #178


Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
на самом деле все гораздо проще
Действительно, а главное, этот пример есть и в справке, как я его упустил спасибо!

Цитата:
твои манипуляции с точкой наводят на мысль что обычной четности тебе мало
Просто хотел проверять и чётность дробных чисел.

Цитата:
Красивый способ для FileDelete с форума поддержки
Хм, это видимо самый верный способ, просто проверяется если это не папка, тогда удаляется файл... а разработчики вкурсе об этом? почему не сделают “офицеальную” команду в таком же духе




Такой вопрос:
Как послать обычное нажатие клавишы Windows (с изображением окон)? нужно отдельно в експлорере вызвать контекстное меню, и единственны способ который мне пришел в голову, так это нажать эту клавишу...
Пробую так:
Код: Выделить весь код
Send("#")
Ничего не происходит, в полукруглые скобки заключать пробовал, тоже никакого эффекта, есть идеи?

Или, как можно обновить окно експлорера, но не посыланием F5, а именно полноценным обновлением (в некоторых случаях F5 не помагает).

Последний раз редактировалось Creat0R, 05-02-2007 в 01:20.


Отправлено: 00:51, 05-02-2007 | #179


Аватара для Creat0R

Must AutoIt


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

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


Ещё способ удаления файла:

Код: Выделить весь код
Func _FileDelete($Path, $FileName)
    If StringLen($FileName) >= 1 Then FileDelete($Path & "\" & $FileName)
EndFunc
А также способ подсчёта количества символов в файле:

Код: Выделить весь код
$FileName = @ScriptDir & "\test.txt"
$FileCharCount = _FileCountChar($FileName, 0)
If $FileCharCount <> -1 Then
    MsgBox(64, "File Characters Count", "In the file <" & $FileName & "> was found [" & $FileCharCount & "] characters (including Carriage Returns and Line Feeds)")
Else
    MsgBox(16, "Error!", "The file <" & $FileName & "> was not found")
EndIf

Func _FileCountChar($FileName, $Flag=0)
    If Not FileExists($FileName) Then Return -1
    Local $CharsCount = 0
    $fRead = FileRead($FileName, FileGetSize($FileName))
    $fReadArr = StringSplit($fRead, "")
    If IsArray($fReadArr) Then
        For $i = 1 To $fReadArr[0]
            If ($Flag = 1 And $fReadArr[$i] <> @CR And $fReadArr[$i] <> @LF) Or ($Flag = 2 And $fReadArr[$i] <> @CR) Or ($Flag = 3 And $fReadArr[$i] <> @LF) Or $Flag = 0 Then $CharsCount += 1
        Next
        Return $CharsCount
      EndIf
EndFunc

Если поставить последний параметр как 1 ($Flag=1), то подсчёт не будет учитывать возврат каретки и перевод строки (@CRLF), если поставить параметр на 2, то будут учитываться все символы кроме @CR, ну а если поставит параметр $Flag = 3, то будут учитываться все символы за исключением символа перевода строки (@LF).

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

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

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:32, 06-02-2007 | #180



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




 
Переход