PDA

Показать полную графическую версию : [Архив - Часть 1.3] AutoIt скрипты


Страниц : 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Creat0R
19-12-2006, 02:50
Переделал немного функцию для удаления файлов из подкаталогов, чтобы она ещё возвращала значения...
если все файлы были найдены, то возвращается сообщение о том что всё прошло успешно, если какого-то файла не удалось удалить, то возвращается список тех файлов которых не удалось удалить :) - если каталоги небыли найдены, или сам путь не сущестсвует, то также возвращается сообщение об ошибке.

P.S.

Хотелось бы узнать, как можно построить функцию так, чтобы возвращалось значение в массиве (через _ArrayAdd полагаю), я пробовал сделать, но у меня почему то возвращается только первое значение (из $Results[1]) - если кто-то может показать как правильно строить массив на примере с этой функцией (для удаления), то буду очень признателен.


$Results = _DeleteFileInFolders($FileName, $Path)

MsgBox(64, "Results", "Results of deleting:" & @CR & $Results)

Func _DeleteFileInFolders($FileName, $Path)
Local $ErrDelList
If Not FileExists($Path) Then Return "The destination folder <" & $Path & "> was not found"
$ErrDelete1 = FileDelete($Path & "\" & $FileName)
$DirsList = _DirListToArray($Path)
If IsArray($DirsList) Then
If $DirsList[0] = 0 And $ErrDelete1 = 0 Then Return "There is no file <" & $FileName & "> in the destination folders, and in there is no folders in the destination path <" & $Path & ">"
For $i = 1 to $DirsList[0]
$ErrDelete2 = FileDelete($DirsList[$i] & "\" & $FileName)
If $ErrDelete2 = 0 And FileExists($DirsList[$i] & "\" & $FileName) Then
If $ErrDelete1 = 0 And FileExists($Path & "\" & $FileName) And StringInStr($ErrDelList, $Path & "\" & $FileName) = 0 Then $ErrDelList = $ErrDelList & @CR & "Can not delete the file <" & $Path & "\" & $FileName & ">"
$ErrDelList = $ErrDelList & @CR & "Can not delete the file <" & $DirsList[$i] & "\" & $FileName & ">"
ElseIf $ErrDelete2 = 0 And Not FileExists($DirsList[$i] & "\" & $FileName) Then
If $ErrDelete1 = 0 And Not FileExists($Path & "\" & $FileName) And StringInStr($ErrDelList, $Path & "\" & $FileName) = 0 Then $ErrDelList = $ErrDelList & @CR & "File <" & $Path & "\" & $FileName & "> not found"
$ErrDelList = $ErrDelList & @CR & "File <" & $DirsList[$i] & "\" & $FileName & "> not found"
EndIf
Next
If $ErrDelList <> "" Then
Return $ErrDelList
ElseIf $ErrDelete1 = 0 Then
Return "There is no file <" & $FileName & "> in the destination path <" & $Path & ">"
Else
Return "All files in the destination folder (and in his subfolders) was secceseful deleted!"
EndIf
Else
Return ""
EndIf
EndFunc

Sla8ak
19-12-2006, 16:45
Доброго времени суток!

Интересует следующее - можно ли при помощи AutoIt скрипта сделать следуюющее.
Пользователь входит в систему, появляэтся переменная окружения %USERNAME%=zzz_aaa, где zzz - группа пользователя, aaa - инициалы пользователя.
Нужно получить только группу пользователя, и ввести в систему новую переменную set USERGROUP=zzz.
Вопрос каким образом можно взять из имени пользоваетля только группу.

Спасибо.
З.Ы. Имя пользователя находится в актив директори.

Creat0R
19-12-2006, 17:56
Sla8ak
каким образом можно взять из имени пользоваетля только группу
Нужно разделить значение переменной по разделителю _, и взять первое значение из массива - а прописать новую переменную, думаю можно через EnvSet()...



$SplitUserName = StringSplit(@UserName, "_")

If IsArray($SplitUserName) Then
$UserGroup = $SplitUserName[1]
Else
$UserGroup = @UserName
EndIf

EnvSet("USERGROUP", $UserGroup)
EnvUpdate()

sattva
20-12-2006, 20:30
С помощью какой команды можно переименовывать файлы!!? Например wgatray.exe в wgatray.exe.old.

Creat0R
21-12-2006, 13:41
sattva
С помощью какой команды можно переименовывать файлы!!?
Как таковой, команды для переименования нет. Но для этой цели используется команда перемещения файла (FileMove()) в том же каталоге...

FileMove("wgatray.exe", "wgatray.exe.old")


-----------------------------------------
У меня есть такой вопрос:

-Возможно ли в GUI, построить реальную ссылку, на которую можно было бы нажать, и она открывалась в браузере (желательно чтобы был выбор с каким браузером запускать)?

Sla8ak
22-12-2006, 13:37
Доброго времени суток.

Интересует следуюющий вопрос: каким образом при помощи AutoIt-скрипта можно перенаправить (переназначить) папку "Мои документы" в другое место, например на сетевой ресурс.

Заранее спасибо.

Djons
23-12-2006, 17:38
Vadikan

Как конвертировать в код AutoIt v3 вот такой CMD скрипт?
Будь добр, приведи код готового скрипта.
FOR %%I IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%I:\PROG.EXE SET path=%%I:\;%path%
reg add "HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_SZ /d %path% /f
reg add "HKCU\Environment" /v Path /t REG_SZ /d %path% /f

Creat0R
23-12-2006, 22:54
Sla8ak
каким образом при помощи AutoIt-скрипта можно перенаправить (переназначить) папку "Мои документы" в другое место
Можно через реестер...


$NewMyDocsPath = "C:\MyDocs"
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DocFolderPaths", @UserName, "REG_SZ", $NewMyDocsPath)


Djons
Как конвертировать в код AutoIt v3 вот такой CMD скрипт?
Конвертировать, как мне самому недавно выяснилось (тут я тоже задавал подобный ворос), нет возможности, но можно написать что-то подобное...


$AllDrivesVar = DriveGetDrive("all")

For $i = 1 to $AllDrivesVar[0]
If $AllDrivesVar[$i] <> "a:" And $AllDrivesVar[$i] <> "b:" And FileExists($AllDrivesVar[$i] & "\PROG.EXE") Then EnvSet("PATH", $AllDrivesVar[$i] & "\;" & EnvGet("PATH"))
Next


Если PROG.EXE будет существовать в нескольких дисках, то и эти диски будут добавлены в переменную PATH.

bes1de
23-12-2006, 23:06
есть скрипт autoit_KIS.exe .для запуска нужен еще и AutoIt3.exe ? или скрипт сам по себе?

Creat0R
24-12-2006, 00:02
bes1de
.для запуска нужен еще и AutoIt3.exe ? или скрипт сам по себе?
Закомпелированный скрипт не нуждается ни в каких компонентах со стороны AutoIT.

Djons
24-12-2006, 00:13
Creat0R

Спасибо, буду пробовать.

Djons
24-12-2006, 08:46
Creat0R

$AllDrivesVar = DriveGetDrive("all")

For $i = 1 to $AllDrivesVar[0]
If $AllDrivesVar[$i] <> "a:" And $AllDrivesVar[$i] <> "b:" And FileExists($AllDrivesVar[$i] & "\PROGPE.WIM") Then EnvSet("PATH", $AllDrivesVar[$i] & "\;" & EnvGet("PATH"))
Next

Эта конструкция ничего не дала. В реестре запись диск не добавлен.
Подскажи как точно нужно написать скрипт.
Я то в этих скриптах ни бум-бум.

Creat0R
24-12-2006, 15:13
Djons
Эта конструкция ничего не дала
Странно, должна была прописаться переменная... вот вроде рабочий вариант:


$AllDrivesVar = DriveGetDrive("all")

For $i = 1 to $AllDrivesVar[0]
If $AllDrivesVar[$i] <> "a:" And $AllDrivesVar[$i] <> "b:" And FileExists($AllDrivesVar[$i] & "\PROGPE.WIM") Then
RegWrite("HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment", "Path", "REG_EXPAND_SZ", $AllDrivesVar[$i] & "\;" & EnvGet("Path"))
RegWrite("HKCU\Environment", "Path", "REG_SZ", $AllDrivesVar[$i] & "\;" & EnvGet("Path"))
EndIf
Next
EnvUpdate()



Последняя строка предназначена для обновления переменных сред.

S377
25-12-2006, 14:12
помогите, пожалуйста такая проблема автоит версия 3,2
пытаюсь эмулировать клики мыши по касперскому 5
WinWaitActive("Антивирус Касперского Personal", "Настройка")
ControlClick("Антивирус Касперского Personal", "Настройка", "Обновления")
и тишина...

Creat0R
25-12-2006, 17:14
S377
Используй AutoIt Window Information Tool (Aut3info.exe) чтобы определить заголовок окна, его текст, и класс кнопки ( ClassNameNN: ) на которую нужно нажать. Также учти, заголовок окна (и, наверное текст), чувствителен к регистру, попробуй ставить в начале скрипта Opt("WinTitleMatchMode", 4) .

S377
27-12-2006, 09:24
использую AutoIt Window Information Tool (Aut3info.exe)
но она чтото часто гонит может изза того что в виртуальном компе отлаживаю скрипты
видимо в виртуальном компе и добром ControlClick не работает?
что скажете по этому?
и еще можно сделать клик мыши (координаты мыши ОТНОСИТЕЛЬНО ОКНА) ?

Creat0R
27-12-2006, 09:51
S377
можно сделать клик мыши (координаты мыши ОТНОСИТЕЛЬНО ОКНА) ?
Для относительных координатов, поставь в Aut3info.exe опцию Options - Coord mode - Client - и тогда при наведении курсора координаты будут отображаться относительно границам активного окна.

А в начало скрипта такую строку нужно ставить:

Opt("MouseCoordMode", 0) ;или вместо 0 -> 2 - тога будет относительно клиентским участкам окна

S377
27-12-2006, 11:19
Благодарствую за совет!
не знал про: Opt("MouseCoordMode", 0) ;или вместо 0 -> 2
это очень удобно

DenchikK
28-12-2006, 23:39
Хотел спросить, можно ли такое осуществить на примере установки
соединения и настройки модема. А именно - список установленных модемов
как я поонимаю, сортируется по алфавиту. Предугадать заранее, на каком
месте он окажется, разумеется не возможно. Можно всё таки как то
установить курсор на нужный мне модем (тот, который заранее знаешь как
называется)?
Список модемов в "Телефонах и Модемах" определяется как
SysListView322, при установке соединения - SysListView321

Djons
29-12-2006, 00:54
Creat0R

Вот так работает:

For $i = 1 to $AllDrivesVar[0]
If $AllDrivesVar[$i] <> "a:" And $AllDrivesVar[$i] <> "b:" And FileExists($AllDrivesVar[$i] & "\GEB.CD") Then
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment", "Path", "REG_SZ", $AllDrivesVar[$i] & "\;" & EnvGet("PATH"))
RegWrite("HKEY_CURRENT_USER\Environment", "Path", "REG_SZ", $AllDrivesVar[$i] & "\;" & EnvGet("PATH"))
EndIf
Next




© OSzone.net 2001-2012