|
Компьютерный форум 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 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Завершение процессов и служб
Некоторые процессы невозможно завершить с помощью ProcessClose() т.к. они имеют отношение к службам. А если такой просесс завершить принудительно, (например с помощью консольной команды TASKKILL) то в журнал системных событий записывается сообщение об ошибке, и потом что либо найти в нём с каждым разом становится всё труднее... Всё это навело меня на мысль написать скрипт: $ProcessName="oodag.exe" ; имя завершаемого процесса ;~ Подключаемся к WMI: $WMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2") $PID = ProcessExists($ProcessName) ;Определяем PID If $PID Then ProcessClose($PID) ; Если существует - пытаемся убить If ProcessExists($PID) Then ; Если процесс всё ещё существует тогда $OutputName=CheckService($PID) ; проверяем принадлежность процесса к службам (проверку можно пропусить!!!) If Not $OutputName=0 Then ; Если является службой тогда $Pressed=MsgBox(262144+32+4,"", "Не удалось завершить процесс поскольку"& @CR & _ "он является запущенной службой: " & $OutputName & @CR & _ "Остановить службу?") If $Pressed=6 Then KillService($PID) ; Если "Да" - останавливаем службу EndIf EndIf ;~ ================================================== ;~ Определяет, является ли процесс запущенной службой (Эту функцию можно исключить!!!) ;~ Если является службой - возвращает "Выводное имя" службы, в противном случае 0 Func CheckService($PrPid) ;~ Формируем текст запроса: $QueryText = "SELECT * FROM Win32_Service WHERE ProcessId = '" & $PrPid & "'" ;~ Создаём объект-коллекцию: $CollectionServices = $WMI.ExecQuery($QueryText) If $CollectionServices.Count > 0 Then ; Если элементов коллекции > 0 Тогда ;~ Цикл по элемент(у)ам коллекции: For $objItem In $CollectionServices Return $objItem.DisplayName Next Else Return 0 EndIf EndFunc ;~ ================================================== ;~ Останавливает службу, в случае успеха возвращает: 0 Func KillService($PrPID) ;~ Формируем текст запроса: $QueryText = "SELECT * FROM Win32_Service WHERE ProcessId = '" & $PrPid & "'" ;~ Создаём объект-коллекцию: $CollectionServices = $WMI.ExecQuery($QueryText) If $CollectionServices.Count > 0 Then ; Если элементов коллекции > 0 Тогда ;~ Цикл по элемент(у)ам коллекции: For $objItem In $CollectionServices Return $objItem.StopService() Next EndIf EndFunc |
Отправлено: 03:20, 11-05-2007 | #391 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать mrak1990
Цитата:
Я думаю единственным препятствием может быть "блокирующий дескриптор" - а откуда ему там взятся, если только в момент переименования, файл не открыт для записи каким либо другим процессом (естественно, такое "открытие" может произойти только с ведома пользователя). |
|
Отправлено: 04:34, 11-05-2007 | #392 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать Diamond
Цитата:
Единственное, что надо будет дописать, чтобы он обновлял не только открытые окна, рабочий стол, но и диалог выбора\открытия файла. Но в этом нет ничего трудного, к счастью. |
|
Отправлено: 20:56, 11-05-2007 | #393 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать Почему вот такой батник работает:
fsum.exe -c -r -d%inputdir% %mdfile% > fsum.err а автоит нет: RunWait (@ScriptDir& '\fsum.exe -c -r -d' &$inputdir& ' ' &$mdfile& ' > ' &@ScriptDir& '\fsum.err', @ScriptDir) пробовал так-же RunWait (@COMSPEC & ' /c fsum.exe -c -r -d' &$inputdir& ' ' &$mdfile& ' > ' &@ScriptDir& '\fsum.err', @ScriptDir) Как привильно запустить команду? |
Отправлено: 12:06, 13-05-2007 | #394 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать VelDmi
Цитата:
Возможно путь к скрипту содержит пробелы, или служебные символы, в таком случае надёжнее заключать пути в кавычки: |
|
------- Отправлено: 16:31, 13-05-2007 | #395 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать не работает > fsum.err, то есть при вызове из автоит не пишет в файл fsum.err
|
Отправлено: 17:45, 13-05-2007 | #396 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать VelDmi
проверил - с @COMSPEC все работает, попробуй вместо /c поставить /k и отследить сообщения |
Отправлено: 06:20, 14-05-2007 | #397 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать amel27
Посмотри пожалуйста пример вживую. http://rapidshare.com/files/31198773/1.rar.html Батником у меня создается файл, а автоитом нет. |
Отправлено: 09:39, 14-05-2007 | #398 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать VelDmi
CMD ругался на кавычки после ">", так с кавычками вроде работает: $CutDir = '"' &@ScriptDir& '\CutDir' & '"' $exfile = '"' &@ScriptDir& '\fsum.exe' & '"' $mdfile = '"' &@ScriptDir& '\sums.md5' & '"' $erfile = '"' &@ScriptDir& '\fsums.err' & '"' RunWait (@COMSPEC & ' /c ' & '(' & $exfile & ' -c -r -d' & $CutDir & ' ' & $mdfile & ' >' & $erfile & ')', @ScriptDir) |
Отправлено: 12:36, 14-05-2007 | #399 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Вышла новая версия - AutoIt v3.2.4.1...
Из глобальных изменении: *AutoIt теперь скомпилирован для Unicode, AutoIt3.exe для Unicode - AutoIt3A.exe для ANSI. Для более подробной информации смотрите эту страницу. *Переписан инструмент для работы с окнами (Au3Info tool). *Функции бинарных данных полностью переписаны - скрипты использующие эти функции будет необходимо изменить. Справка на русском для AutoIt v3.2.4.0. |
------- Последний раз редактировалось Creat0R, 15-05-2007 в 06:15. Причина: Добавил информацию о справке Отправлено: 06:06, 15-05-2007 | #400 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|