|
Компьютерный форум 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 |
Старожил Сообщения: 269
|
Профиль | Отправить PM | Цитировать Да забыл указать самое главное, мне надо не только вкладку Сеть -> свойства TCP/IP настроить, но и другие параметры, шифрование, WINS и проче.... вообщем пройтись по всем вклдкам свойств определенного адаптера (т.к. VPN создается для работы с провайдером спутникового интернета)
|
------- Отправлено: 10:20, 08-12-2006 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
- новый флаг: 32 = Hide places bar (не отображать панель с иконками); - новый параметр: Default Extension (если пользователь не вбил расширение, то автоматом добавляет указанный); - новый параметр: HWND головного окна GUI (из-за чего собственно весь сыр-бор). Func _FileOpenDialog ($sTitle, $sInitDir, $sFilter = 'All (*.*)', $iOpt = 0, $sDefaultFile = "", $sDefaultExt = "", $mainGUI = 0) Local $iFileLen = 65536 ; Max chars in returned string ; API flags prepare Local $iFlag = BitOR ( _ BitShift (BitAND ($iOpt, 1),-12), BitShift (BitAND ($iOpt, 2),-10), BitShift (BitAND ($iOpt, 4),-7 ), _ BitShift (BitAND ($iOpt, 8),-10), BitShift (BitAND ($iOpt, 4),-17) ) ; Filter string to array convertion Local $asFLines = StringSplit ( $sFilter, '|'), $asFilter [$asFLines [0] *2+1] Local $i, $iStart, $iFinal, $suFilter = '' $asFilter [0] = $asFLines [0] *2 For $i=1 To $asFLines [0] $iStart = StringInStr ($asFLines [$i], '(', 0, 1) $iFinal = StringInStr ($asFLines [$i], ')', 0,-1) $asFilter [$i*2-1] = StringStripWS (StringLeft ($asFLines [$i], $iStart-1), 3) $asFilter [$i*2] = StringStripWS (StringTrimRight (StringTrimLeft ($asFLines [$i], $iStart), StringLen ($asFLines [$i]) -$iFinal+1), 3) $suFilter = $suFilter & 'byte[' & StringLen ($asFilter [$i*2-1])+1 & '];byte[' & StringLen ($asFilter [$i*2])+1 & '];' Next ; Create API structures Local $uOFN = DllStructCreate ('dword;int;int;ptr;ptr;dword;dword;ptr;dword' & _ ';ptr;int;ptr;ptr;dword;short;short;ptr;ptr;ptr;ptr;ptr;dword;dword' ) Local $usTitle = DllStructCreate ('byte[' & StringLen ($sTitle) +1 & ']') Local $usInitDir= DllStructCreate ('byte[' & StringLen ($sInitDir) +1 & ']') Local $usFilter = DllStructCreate ($suFilter & 'byte') Local $usFile = DllStructCreate ('byte[' & $iFileLen & ']') Local $usExtn = DllStructCreate ('byte[' & StringLen ($sDefaultExt) +1 & ']') For $i=1 To $asFilter [0] DllStructSetData ($usFilter, $i, $asFilter [$i]) Next ; Set Data of API structures DllStructSetData ($usTitle, 1, $sTitle) DllStructSetData ($usInitDir, 1, $sInitDir) DllStructSetData ($usFile, 1, $sDefaultFile) DllStructSetData ($usExtn, 1, $sDefaultExt) DllStructSetData ($uOFN, 1, DllStructGetSize($uOFN)) DllStructSetData ($uOFN, 2, $mainGUI) DllStructSetData ($uOFN, 4, DllStructGetPtr ($usFilter)) DllStructSetData ($uOFN, 7, 1) DllStructSetData ($uOFN, 8, DllStructGetPtr ($usFile)) DllStructSetData ($uOFN, 9, $iFileLen) DllStructSetData ($uOFN, 12, DllStructGetPtr ($usInitDir)) DllStructSetData ($uOFN, 13, DllStructGetPtr ($usTitle)) DllStructSetData ($uOFN, 14, $iFlag) DllStructSetData ($uOFN, 17, DllStructGetPtr ($usExtn)) DllStructSetData ($uOFN, 23, BitShift (BitAND ($iOpt, 32), 5)) ; Call API function $ret = DllCall ('comdlg32.dll', 'int', 'GetOpenFileName', _ 'ptr', DllStructGetPtr ($uOFN) ) If $ret [0] Then If BitAND ($iOpt, 4) Then $i = 1 While 1 If DllStructGetData ($usFile, 1, $i) =0 Then If DllStructGetData ($usFile, 1, $i+1) Then DllStructSetData ($usFile, 1, 124, $i) Else ExitLoop EndIf EndIf $i += 1 Wend EndIf Return DllStructGetData ($usFile, 1) Else SetError (1) Return "" EndIf EndFunc Func _FileSaveDialog ($sTitle, $sInitDir, $sFilter = 'All (*.*)', $iOpt = 0, $sDefaultFile = "", $sDefaultExt = "", $mainGUI = 0) Local $iFileLen = 65536 ; Max chars in returned string ; API flags prepare Local $iFlag = BitOR (BitShift (BitAND ($iOpt, 2),-10), BitShift (BitAND ($iOpt,16), 3 )) ; Filter string to array convertion Local $asFLines = StringSplit ( $sFilter, '|'), $asFilter [$asFLines [0] *2+1] Local $i, $iStart, $iFinal, $suFilter = '' $asFilter [0] = $asFLines [0] *2 For $i=1 To $asFLines [0] $iStart = StringInStr ($asFLines [$i], '(', 0, 1) $iFinal = StringInStr ($asFLines [$i], ')', 0,-1) $asFilter [$i*2-1] = StringStripWS (StringLeft ($asFLines [$i], $iStart-1), 3) $asFilter [$i*2] = StringStripWS (StringTrimRight (StringTrimLeft ($asFLines [$i], $iStart), StringLen ($asFLines [$i]) -$iFinal+1), 3) $suFilter = $suFilter & 'byte[' & StringLen ($asFilter [$i*2-1])+1 & '];byte[' & StringLen ($asFilter [$i*2])+1 & '];' Next ; Create API structures Local $uOFN = DllStructCreate ('dword;int;int;ptr;ptr;dword;dword;ptr;dword' & _ ';ptr;int;ptr;ptr;dword;short;short;ptr;ptr;ptr;ptr;ptr;dword;dword' ) Local $usTitle = DllStructCreate ('byte[' & StringLen ($sTitle) +1 & ']') Local $usInitDir= DllStructCreate ('byte[' & StringLen ($sInitDir) +1 & ']') Local $usFilter = DllStructCreate ($suFilter & 'byte') Local $usFile = DllStructCreate ('byte[' & $iFileLen & ']') Local $usExtn = DllStructCreate ('byte[' & StringLen ($sDefaultExt) +1 & ']') For $i=1 To $asFilter [0] DllStructSetData ($usFilter, $i, $asFilter [$i]) Next ; Set Data of API structures DllStructSetData ($usTitle, 1, $sTitle) DllStructSetData ($usInitDir, 1, $sInitDir) DllStructSetData ($usFile, 1, $sDefaultFile) DllStructSetData ($usExtn, 1, $sDefaultExt) DllStructSetData ($uOFN, 1, DllStructGetSize($uOFN)) DllStructSetData ($uOFN, 2, $mainGUI) DllStructSetData ($uOFN, 4, DllStructGetPtr ($usFilter)) DllStructSetData ($uOFN, 7, 1) DllStructSetData ($uOFN, 8, DllStructGetPtr ($usFile)) DllStructSetData ($uOFN, 9, $iFileLen) DllStructSetData ($uOFN, 12, DllStructGetPtr ($usInitDir)) DllStructSetData ($uOFN, 13, DllStructGetPtr ($usTitle)) DllStructSetData ($uOFN, 14, $iFlag) DllStructSetData ($uOFN, 17, DllStructGetPtr ($usExtn)) DllStructSetData ($uOFN, 23, BitShift (BitAND ($iOpt, 32), 5)) ; Call API function $ret = DllCall ('comdlg32.dll', 'int', 'GetSaveFileName', _ 'ptr', DllStructGetPtr ($uOFN) ) If $ret [0] Then Return DllStructGetData ($usFile, 1) Else SetError (1) Return "" EndIf EndFunc |
|
Отправлено: 07:11, 09-12-2006 | #32 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать $ip = '192.168.100.' & $ComputerNumber If @IPAddress1 <> $ip Then RunWait (@COMSPEC & ' /c chcp 1251 && ' & @SystemDir & '\netsh.exe interface ip dump > netsh.cfg', @ScriptDir, @SW_HIDE) FileWriteLine(@ScriptDir & "\error.log", StringFormat("%s:%s:%s %s-%s-%s Старый IP %s, надо менять", @HOUR, @MIN, @SEC, @MDAY, @MON, @YEAR, @IPAddress1)) $file = FileOpen(@ScriptDir & '\netsh.cfg', 0) ; Check if file opened for reading OK If $file = -1 Then FileWriteLine(@ScriptDir & "\error.log", StringFormat("%s:%s:%s %s-%s-%s Не могу открыть файл netsh.cfg", @HOUR, @MIN, @SEC, @MDAY, @MON, @YEAR)) Exit EndIf ; Read in lines of text until the EOF is reached For $i = 1 To 60 $line = FileReadLine($file) If StringInStr($line, 'set address name="') = 1 Then ExitLoop If $i = 60 Then Shutdown (6) Sleep (1000) Next $line = StringTrimLeft( $line, 17 ) $line = StringTrimRight( $line, StringLen($line) - StringInStr($line, 'source') + 2) FileClose($file) RunWait (@SystemDir & '\netsh.exe interface ip set address name=' & $line & ' source=static addr=' & $ip & ' mask=255.255.255.0 gateway=none', @SystemDir, @SW_HIDE) FileWriteLine(@ScriptDir & "\error.log", StringFormat("%s:%s:%s %s-%s-%s Сменили IP на: %s", @HOUR, @MIN, @SEC, @MDAY, @MON, @YEAR, $ip)) $Restart = 'Yes' ; требуется перезагрузка EndIf |
Отправлено: 12:20, 09-12-2006 | #33 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать Первый запуск netsh.exe нужен для того, чтобы выяснить имя сетевого интерфейса, т.к. оно может изменяться.
Второй запуск уже устанавливает для подключения необходимый мне ИП, gateway и проч. |
Отправлено: 12:44, 09-12-2006 | #34 |
Старожил Сообщения: 269
|
Профиль | Отправить PM | Цитировать VelDmi
хороший скрипт, спасибо, но как настроить остальные параметры шифрования,Wins и прочих на других вкладках окна свойств??? |
------- Отправлено: 15:36, 09-12-2006 | #35 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать biork
Цитата:
Func _FileReadUnicodeToArray ($sFilePath, ByRef $aArray) Local $hFile = FileOpen ($sFilePath, 0) If $hFile = -1 Then SetError (1) Return 0 EndIf Local $uData = FileRead ($hFile, FileGetSize($sFilePath)) Local $sData = _WCStrToString ($uData) If @error Then SetError (2) Return 0 EndIf $aArray = StringSplit (StringStripCR ($sData), @LF) FileClose ($hFile) Return 1 EndFunc Func _FileWriteUnicodeFromArray ($sFilePath, ByRef $a_Array, $i_Base = 0, $i_UBound = 0) Local $hFile If Not IsArray ($a_Array) Then SetError (2) Return 0 EndIf Local $last = UBound ($a_Array) - 1 If $i_UBound < 1 Or $i_UBound > $last Then $i_UBound = $last If $i_Base < 0 Or $i_Base > $last Then $i_Base = 0 $hFile = FileOpen ($sFilePath, 2) If $hFile = -1 Then SetError (1) Return 0 EndIf FileWrite ($hFile, _StringToWCStr ($a_Array [$i_Base], 1)) For $x = $i_Base +1 To $i_UBound $a_Array [$x] = @CRLF & $a_Array [$x] FileWrite ($hFile, _StringToWCStr ($a_Array [$x])) Next FileClose($hFile) Return 1 EndFunc Func _StringToWCStr (ByRef $sString, $mark = 0) Local $len = StringLen ($sString), $wcl= BitShift ($len, -1) Local $buf, $ptr If $len =0 Then If $mark Then Return Chr(0xFF) & Chr(0xFE) Return '' EndIf If $mark Then $buf = DllStructCreate ("byte[" & $wcl +2 & "]") DllStructSetData ($buf, 1, Chr(0xFF) & Chr(0xFE)) $ptr = DllStructGetPtr ($buf) +2 Else $buf = DllStructCreate ("byte[" & $wcl & "]") $ptr = DllStructGetPtr ($buf) EndIf Local $ret = DllCall ("Kernel32.dll", "int", "MultiByteToWideChar", _ "int", 0, _ "int", 0, _ "str", $sString, _ "int", $len, _ "ptr", $ptr, _ "int", $wcl ) If $ret [0] Then Return DllStructGetData ($buf, 1) Else $ret = DllCall ("Kernel32.dll", "int", "GetLastError") SetError ($ret [0]) EndIf EndFunc Func _WCStrToString (ByRef $wcString) Local $wcl = StringLen ($wcString), $len = BitShift ($wcl, 1) If $wcl =0 Then Return '' Local $out = DllStructCreate ("char[" & $len & "]") Local $buf = DllStructCreate ("byte[" & $wcl & "]") Local $ptr = DllStructGetPtr ($buf) DllStructSetData ($buf, 1, $wcString) If DllStructGetData ($buf, 1, 1) =-1 AND DllStructGetData ($buf, 1, 2) =-2 Then $ptr +=2 $len -=1 EndIf Local $ret = DllCall ("Kernel32.dll", "int", "WideCharToMultiByte", _ "int", 0, _ "int", 0, _ "ptr", $ptr, _ "int", $len, _ "ptr", DllStructGetPtr ($out), _ "int", $len, _ "int", 0, _ "int", 0 ) If $ret [0] Then Return DllStructGetData ($out, 1) Else $ret = DllCall ("Kernel32.dll", "int", "GetLastError") SetError ($ret [0]) EndIf EndFunc |
|
Последний раз редактировалось amel27, 11-12-2006 в 03:33. Отправлено: 19:40, 09-12-2006 | #36 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать desperate
Цитата:
Чтобы получить справку по команде, введите эту команду, затем пробел и "?" netsh>interface ip show Применимы следующие команды: Команды в этом контексте: show address - Отображение конфигурации IP-адресов. show config - Отображение IP-адреса и дополнительных сведений. show dns - Отображение адресов DNS-сервера. show icmp - Отображение статистики ICMP. show interface - Отображение статистики IP-интерфейса. show ipaddress - Отображение текущих IP-адресов. show ipnet - Отображение сопоставления сетей IP и физических носителей. show ipstats - Отображение статистики IP. show joins - Отображение присоединенных многоадресных групп. show offload - Отображает информацию разгрузки. show tcpconn - Отображение TCP-подключений. show tcpstats - Отображение статистики TCP. show udpconn - Отображение UDP-подключений. show udpstats - Отображение статистики UDP. show wins - Отображение адресов WINS-сервера. |
|
Отправлено: 08:06, 10-12-2006 | #37 |
Старожил Сообщения: 269
|
Профиль | Отправить PM | Цитировать VelDmi
без вариантов, не получилось с помощью netsh настроить все параметры. Поэтому мой вопрос по поводу автоматического открытия Properties определенного сетевого подключения остается открытым. |
------- Отправлено: 19:46, 10-12-2006 | #38 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать desperate
Цитата:
|
|
Отправлено: 12:17, 11-12-2006 | #39 |
Старожил Сообщения: 269
|
Профиль | Отправить PM | Цитировать Снимаю свой вопрос, проблема решиласт сама собой, когда набрел на форуме а статью про автоматическое создание dial-up соединения.
у кого будет подобная проблема пишити в личку и тогда создам отдельный топик, в котором будем развиваться и совершенствоваться. |
------- Последний раз редактировалось Sanja Alone, 11-12-2006 в 17:20. Причина: Дублирование текста Отправлено: 14:49, 11-12-2006 | #40 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|