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

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

 
mpn mpn вне форума

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


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

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


Всем привет!
Поможите, кто может.
Задача простая. Необходимо периодически на удаленном компьютере (под Unix) выполнять ряд команд с дальнейшей обработкой выводимой в консоль информации. Хочу использовать для этого строку $t=Run("telnet","",@SW_HIDE,3) и далее при помощи StdinWrite, StdoutRead работать с открытой консолью. Но почему-то процесс telnet.exe закрывается сразу же после запуска. Где ошибка?

Отправлено: 09:30, 17-12-2006 | #51



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

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


Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
думаю в общем случае это неосуществимо
Да, я тоже так предположил сразу, но всё равно спасибо за то что есть (с гуи) - я вообще то предпологал что и это будет не реализуемо, но к огромному счастью, оказалось что это не так - надеюсь что когда нибудь и с этим делом вяснится что мы ошибаемся .

Цитата:
стиль для скобок добавил
Thnx!

mpn
Цитата:
почему-то процесс telnet.exe закрывается сразу же после запуска. Где ошибка?
Может этот процесс требует чтобы рабочий каталог был тот в котором он находится?
Попробуй перед запускам сменить рабочий каталог FileChangeDir("путь\к telnet.exe\"), или указать путь в самой сроке запуска...

Код: Выделить весь код
$t=Run("telnet.exe","путь\к telnet.exe\",@SW_HIDE,3)
Или просто с полным путём запустить...

Код: Выделить весь код
$t=Run("путь\к telnet.exe\telnet.exe","",@SW_HIDE,3)
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

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

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

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:16, 17-12-2006 | #52


Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
стиль для скобок добавил
По прикреплённому файлу...
Цитата:
Архив повреждён или имеет неизвестный формат
По ссылке в посте...

Цитата:
Sorry, the file you requested is not available.


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

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

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:26, 17-12-2006 | #53

mpn mpn вне форума

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


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

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


Creat0R

Уже перепробовал все варианты. При этом, если если вместо telnet поставить, например, cmd - все работает.

Отправлено: 10:52, 17-12-2006 | #54


Аватара для DenchikK

Старожил


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

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


Аватара для Creat0R

Must AutoIt


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

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


mpn
Цитата:
Уже перепробовал все варианты
Используя ком. строку пробовал?
Код: Выделить весь код
FileChangeDir("Путь к проге")
Run(@ComSpec, " /c start telnet.exe", "", @SW_HIDE)
DenchikK
Цитата:
ошибка выдается
Какая у тебя версия AutoIt?

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

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

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:06, 17-12-2006 | #56


Аватара для DenchikK

Старожил


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

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


Creat0R
Цитата:
Какая у тебя версия AutoIt?
Цитата:
AutoIT версий 3.1.0 и 3.1.1 ставил.
Добавлено:
Всё, спасибо! Заработало! Зашел на сайт - а там версия новее. Скачал - всё замечательно! Ещё раз спасибо!

Последний раз редактировалось DenchikK, 18-12-2006 в 01:01.


Отправлено: 19:16, 17-12-2006 | #57

mpn mpn вне форума

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


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

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


Creat0R
Пробовал и с командной строкой. При этом первым запускается процесс cmd.exe, именно он становится доступным для ввода/вывода (последний параметр в команде run =3). Запускающийся следом telnet.exe не принимает команды, отправленные при помощи StdinWrite, даже при правильно указанном PID.
Поясню еще. Программу необходимо запускать в т.ч. и ночью на заблокированном компьютере. Поэтому использование send, отправляющей символы в активное DOS-окно, отпадает. Различные Control.. не работают с такими окнами. Пробовал вместо telnet запускать hyperterm.exe, но при его закрытии (на заблокированном ПК) Windows ругается: "...неизвестная ошибка...", и больше его запускать не хочет. Использование экзотических терминальных программ ограничивает мобильность скрипта.
Выход где-то должен быть!

Отправлено: 05:50, 18-12-2006 | #58


Аватара для DenchikK

Старожил


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

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


Creat0R
А можно Вас ещё побеспокоить? Никак не могу изменить скрипт так, чтоб
удалялись несколько файлов, и с нескольких путей. Приходится для
каждого файла и каждого пути писать отдельный скрипт, при компиляции
каждый скрипт начинает весить 180 kb, и несколько - уже весят за 2
мегабайта!
Заранее спасибо!

Отправлено: 08:34, 18-12-2006 | #59


Аватара для Creat0R

Must AutoIt


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

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

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

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

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


Отправлено: 14:16, 18-12-2006 | #60



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




 
Переход