|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты |
|
[Архив - Часть 1.3] AutoIt скрипты
|
Старожил Сообщения: 250 |
Профиль | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе 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 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Всем привет!
Поможите, кто может. Задача простая. Необходимо периодически на удаленном компьютере (под Unix) выполнять ряд команд с дальнейшей обработкой выводимой в консоль информации. Хочу использовать для этого строку $t=Run("telnet","",@SW_HIDE,3) и далее при помощи StdinWrite, StdoutRead работать с открытой консолью. Но почему-то процесс telnet.exe закрывается сразу же после запуска. Где ошибка? |
Отправлено: 09:30, 17-12-2006 | #51 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
Цитата:
mpn Цитата:
Попробуй перед запускам сменить рабочий каталог FileChangeDir("путь\к telnet.exe\"), или указать путь в самой сроке запуска... Или просто с полным путём запустить... DenchikK Пиши скрипт так, и ненужно никаких Include : $Path = @ScriptDir & "\2" $FileName = "1.txt" $DirsList = _DirListToArray ($Path) For $i = 1 to $DirsList[0] FileDelete($DirsList[$i] & "\" & $FileName) Next FileDelete($Path & "\" & $FileName) Func _DirListToArray ($sPath) Local $i, $j, $rlist[1]=[0], $blist, $alist=_FileListToArray ($sPath, '*', 2) If IsArray ($alist) Then For $i=1 To $alist [0] _ArrayAdd ($rlist, $sPath & "\" & $alist [$i]) $blist = _DirListToArray ($sPath & "\" & $alist [$i]) If $blist[0]>0 Then For $j=1 To $blist [0] _ArrayAdd ($rlist, $blist [$j]) Next EndIf Next EndIf $rlist [0] = UBound ($rlist) - 1 Return $rlist EndFunc Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0) Local $hSearch, $sFile, $asFileList[1] If Not FileExists($sPath) Then Return SetError(1,1,"") If (StringInStr($sFilter, "\")) or (StringInStr($sFilter, "/")) or (StringInStr($sFilter, ":")) or (StringInStr($sFilter, ">")) or (StringInStr($sFilter, "<")) or (StringInStr($sFilter, "|")) or (StringStripWS($sFilter, 8) = "") Then Return SetError(2,2,"") If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3,3,"") $hSearch = FileFindFirstFile($sPath & "\" & $sFilter) If $hSearch = -1 Then Return SetError(4,4,"") While 1 $sFile = FileFindNextFile($hSearch) If @error Then SetError(0) ExitLoop EndIf If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") <> 0 Then ContinueLoop If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Then ContinueLoop ReDim $asFileList[UBound($asFileList) + 1] $asFileList[0] = $asFileList[0] + 1 $asFileList[UBound($asFileList) - 1] = $sFile WEnd FileClose($hSearch) Return $asFileList EndFunc Func _ArrayAdd(ByRef $avArray, $sValue) If IsArray($avArray) Then ReDim $avArray[UBound($avArray) + 1] $avArray[UBound($avArray) - 1] = $sValue SetError(0) Return 1 Else SetError(1) Return 0 EndIf EndFunc |
|||
------- Отправлено: 10:16, 17-12-2006 | #52 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
Цитата:
Цитата:
|
|||
------- Отправлено: 10:26, 17-12-2006 | #53 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Creat0R
Уже перепробовал все варианты. При этом, если если вместо telnet поставить, например, cmd - все работает. |
Отправлено: 10:52, 17-12-2006 | #54 |
Старожил Сообщения: 282
|
Профиль | Отправить PM | Цитировать Creat0R
Спасибо большое, но всё равно ошибка выдается: Local $i, $j, $rlist[1]=[0], $blist, $alist=_FileListToArray ($sPath, '*', 2) Local $i, $j, $rlist[1] ERROR Error: No virriable given for "Dim", "Local", "Global" or "Const" statement. |
Отправлено: 12:23, 17-12-2006 | #55 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 16:06, 17-12-2006 | #56 |
Старожил Сообщения: 282
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
Всё, спасибо! Заработало! Зашел на сайт - а там версия новее. Скачал - всё замечательно! Ещё раз спасибо! |
||
Последний раз редактировалось DenchikK, 18-12-2006 в 01:01. Отправлено: 19:16, 17-12-2006 | #57 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Creat0R
Пробовал и с командной строкой. При этом первым запускается процесс cmd.exe, именно он становится доступным для ввода/вывода (последний параметр в команде run =3). Запускающийся следом telnet.exe не принимает команды, отправленные при помощи StdinWrite, даже при правильно указанном PID. Поясню еще. Программу необходимо запускать в т.ч. и ночью на заблокированном компьютере. Поэтому использование send, отправляющей символы в активное DOS-окно, отпадает. Различные Control.. не работают с такими окнами. Пробовал вместо telnet запускать hyperterm.exe, но при его закрытии (на заблокированном ПК) Windows ругается: "...неизвестная ошибка...", и больше его запускать не хочет. Использование экзотических терминальных программ ограничивает мобильность скрипта. Выход где-то должен быть! |
Отправлено: 05:50, 18-12-2006 | #58 |
Старожил Сообщения: 282
|
Профиль | Отправить PM | Цитировать Creat0R
А можно Вас ещё побеспокоить? Никак не могу изменить скрипт так, чтоб удалялись несколько файлов, и с нескольких путей. Приходится для каждого файла и каждого пути писать отдельный скрипт, при компиляции каждый скрипт начинает весить 180 kb, и несколько - уже весят за 2 мегабайта! Заранее спасибо! |
Отправлено: 08:34, 18-12-2006 | #59 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать mpn
А утилиту telnet пробовал ставить в тот же каталог вместе со скриптом? (или наоборот, скрипт в ту папку в которой telnet) - может что-то блокирует запуск программы? файрвол? какие то другие ограничители доступа в сеть? DenchikK Цитата:
$Path = @ScriptDir & "\имя другого каталога" $FileName = "имя другого файла.txt" $DirsList = _DirListToArray ($Path) For $i = 1 to $DirsList[0] FileDelete($DirsList[$i] & "\" & $FileName) Next FileDelete($Path & "\" & $FileName) Func _DeleteFileInFolders($FileName, $Path) $DirsList = _DirListToArray ($Path) For $i = 1 to $DirsList[0] FileDelete($DirsList[$i] & "\" & $FileName) Next FileDelete($Path & "\" & $FileName) EndFunc _DeleteFileInFolders("File1.txt", "C:\Dir1") _DeleteFileInFolders("File2.txt", "C:\Dir2") _DeleteFileInFolders("File3.txt", "C:\Dir3") И т.д. P.S Функцию поместить в конец скрипта (после трёх существующих функции - _FileListToArray, _ArrayAdd и _DirListToArray). |
|
------- Отправлено: 14:16, 18-12-2006 | #60 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|