[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 6 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Модератор форума: Andrey_A, ХарВик, chip642  
Форум » • Общение Пользователей • » Секреты мастерства » Скриптинг на AUTOIT (Учимся писать скрипты на Autoit и делимся опытом)
Скриптинг на AUTOIT
asmadeusДата: Понедельник, 16.12.2013, 16:44 | Сообщение № 1
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Скриптинг на AUTOIT




Тема для вопросов и ответов по написанию скриптов на autoit'e - стремительно набирающем популярность языке автоматизации выполнения рутинных дел при работе на компьютере.


Сообщение отредактировал asmadeus - Суббота, 01.02.2014, 23:01
 
Andrey_AДата: Среда, 14.03.2018, 04:09 | Сообщение № 76
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
asmadeus, у меня во всех утилитах нет #RequireAdmin - когда-то сталкивался с какими-то проблемами (с какими уже не помню)

Цитата asmadeus ()
Как можно поступить, можно ли указать, какой форме давать админа или нет?

Нет, тут либо-либо.

.


 
asmadeusДата: Четверг, 17.01.2019, 19:26 | Сообщение № 77
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Голову сломал, но не понимаю....
Есть список файлов вида:
Код
ashampoo_snap_10.0.7.zip
auslogics_boostspeed_10.0.22.0.zip
beyond_compare_4.2.8.23479.zip
extreme_picture_finder_3.42.8.0.zip
goodsync_enterprise_10.9.21.6.zip

Часть обработки такая:
Код
..................................................................................
  $arFileList=_FO_FileSearch ( $sPathAppsINI, '*,exe|*.rar|*.zip', True, 0 , 1 , 1 , 1, '', '', '') - тут я читаю именно папку, содержащею файлы
.................................................................................
  For $i=1 To $arFileList[0] - перебор и обработка по порядку в цикле
    $aFileList[$i][0]=StringRegExpReplace($arFileList[$i],'(.*)\\(.*)\.(.*)','\2') - первая колонка массива - имя файла без расширения
    $aFileList[$i][1] = StringReplace(StringRegExpReplace($aFileList[$i][0],'(.*)\_([\d+\.]+)','\1'),'_',' ') - вторая колонка - буквенная часть, т.е название программы
    $aFileList[$i][2]= StringRegExpReplace($aFileList[$i][0],'(.*)\_([\d+\.]+)','\2')  - третья колонка - версия программы
   $aFileList[$i][3]= IniRead($BuildIni, "Apps", $aFileList[$i][1], "qqqqq") - четвертая колонка - в ini файле в секции Apps найти буквенную часть и выдать ее значение

Вот из этого всего именно чтение ini файла и не проходит. Если пишу так:
Код
$aFileList[$i][3]= IniRead($BuildIni, "Apps", "beyond compare", "qqqqq")

то есть название напрямую, то нормально находит и читает.
Что может быть не так?
 
asmadeusДата: Понедельник, 28.01.2019, 20:06 | Сообщение № 78
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Кошмар, а в голову то путного ничего не лезет(
 
Andrey_AДата: Вторник, 05.02.2019, 11:10 | Сообщение № 79
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
В $arFileList[$i] закрадывается в начале перенос строки
Поставил
Код
$arFileList[$i]=StringRegExpReplace($arFileList[$i],'[\r\n]*','')

Код
#include <Array.au3> ; для _ArrayDisplay
#include <FileOperations.au3>

$BuildIni='D:\Test\59903284\Tast.ini'
$sPathAppsINI='D:\Test\59903284\'
$arFileList=_FO_FileSearch ( $sPathAppsINI, '*,exe|*.rar|*.zip', True, 0 , 1 , 1 , 1, '', '', '') ; - тут я читаю именно папку, содержащею файлы
_ViewValues($arFileList,'$arFileList ~ Файл New_1416.au3 ~~ Строка 4')
Local $max=$arFileList[0],$aFileList[$max+1][9]=[[$max]]
; _ViewValues($aFileList,'$aFileList ~ Файл New_1416.au3 ~~ Строка 8')
; .................................................................................
For $i=1 To $arFileList[0] ; - перебор и обработка по порядку в цикле
MsgBox(4096,"Переменная $arFileList[$i]","Файл New_1416.au3 ~~ Строка 12"&@CRLF&"$arFileList[$i] =>"&$arFileList[$i]&"<=")
  $arFileList[$i]=StringRegExpReplace($arFileList[$i],'[\r\n]*','')
  $aFileList[$i][0]=StringRegExpReplace($arFileList[$i],'(.*)\\(.*)\.(.*)','\2') ; - первая колонка массива - имя файла без расширения
  $aFileList[$i][1]=StringReplace(StringRegExpReplace($aFileList[$i][0],'(.*)\_([\d+\.]+)','\1'),'_',' ') ; - вторая колонка - буквенная часть, т.е название программы
  $aFileList[$i][2]=StringRegExpReplace($aFileList[$i][0],'(.*)\_([\d+\.]+)','\2') ; - третья колонка - версия программы
  $aFileList[$i][3]=IniRead($BuildIni, 'Apps', $aFileList[$i][1], "qqqqq") ; - четвертая колонка - в ini файле в секции Apps найти буквенную часть и выдать ее значение
Next
_ViewValues($aFileList,'$aFileList ~ Файл New_1416.au3 ~~ Строка 13')


.


 
asmadeusДата: Понедельник, 22.07.2019, 21:52 | Сообщение № 80
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Привет.
А вот реально ли сделать просмотр тем как в тотале?


Хотелось бы доработать скрипт.
Через день - два выложу исходник (когда вырежу лишнее).
Вроде
-ListView - есть
- закраска его чередующимся цветами (при наличии этой настройки в теме ) - есть
Имеющиеся проблемы:
-курсор в стиле windows
-инверсный курсор
-инверсное выделение

Эти параметры по одиночке вроде и отображаются, а вот в комбинации - ну вообще нет
 
asmadeusДата: Среда, 31.07.2019, 07:08 | Сообщение № 81
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Добавлен архив
Прикрепления: test.zip (3.1 Kb)
 
asmadeusДата: Воскресенье, 10.11.2019, 20:27 | Сообщение № 82
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Привет. Помогите понять.
Есть функция копирования-перемещения файлов-папок по маске. Но вот с программой teamviewer она что то косячит (с 11 файлов копирует только 5, хотя список формируется правильно)
Код
#Include <FileOperations.au3>
#Include <Array.au3>
  _copmov ('Copy', 2, 'd:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer', 'TeamViewer.exe|TeamViewer.ini|TeamViewer_Desktop.exe|TeamViewer_Resource_en.dll|TeamViewer_Resource_ru.dll|TeamViewer_Resource_uk.dll|TeamViewer_StaticRes.dll|tv_w32.dll|tv_w32.exe|tv_x64.dll|tv_x64.exe', True, 'd:\Hlam\test\copmov\final')

; Функция копирования/перемещения файлов и папок по маске
; $iMod - копирование или перемещение
; $iOp - файлы или папки
; $sP - источник
; $sM - маска имен (через |)
; $iInc - глубина вложенности
; $sD - путь назначения
Func _copmov ($iMod, $iOp, $sP, $sM, $iInc, $sD)
    If $sM = "Def" Then $sM = "*"
    Switch $iOp
  Case '1'
   $aFolder = _FO_FolderSearch($sP, $sM, $iInc, 0, 1, 1)
   If IsArray($aFolder) Then
    For $i=1 To $aFolder[0]
     If FileExists ($aFolder[$i]) Then
      Switch $iMod
       Case "Copy"
        DirCopy ($aFolder[$i], $sD, 1)
       Case "Move"
        DirMove ($aFolder[$i], $sD, 1)
      EndSwitch
     EndIf
    Next
   EndIf
  Case '2'
    $sM = _FO_CorrectMask ($sM)
   $aFiles = _FO_FileSearch($sP, $sM, $iInc, 0, 1, 1)
     If IsArray($aFiles) Then
    For $i=1 To $aFiles[0]
       If FileExists ($aFiles[$i]) Then
      Switch $iMod
       Case "Copy"
_ArrayDisplay($aFiles,"Массив $aFiles ~ Файл test.au3 ~~ Строка 33")
        FileCopy ($aFiles[$i], $sD, 1)
       Case "Move"
        FileMove ($aFiles[$i], $sD, 1)
      EndSwitch        
       EndIf
    Next
     EndIf  
    EndSwitch
EndFunc

Прикладываю архив с программой.
Хотелось бы иметь работоспособную функцию перемещения-копирования-удаления файлов-папок по маске (все указанные или все кроме указанных). Да, с функцией удаления (построена по такому же принципу) тоже не все гладко - не удаляет файлы licence.txt, licence.rtf
 
Andrey_AДата: Понедельник, 11.11.2019, 03:12 | Сообщение № 83
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
asmadeus, список создаётся правильный, но перенос строки присутствует, видимо косячит _FO_FileSearch или что-то ещё... не знаю, сам можешь увидеть скопировав свои пути из _ArrayDisplay

Либо править функцию поиска, либо в цикле убрать перенос:

Код
    For $i=1 To $aFiles[0]
MsgBox(4096,"Переменная $aFiles[$i]","$aFiles[$i] =>"&$aFiles[$i]&"<=")
     $aFiles[$i]=StringReplace($aFiles[$i],@LF,'')
MsgBox(4096,"Переменная $aFiles[$i]","$aFiles[$i] =>"&$aFiles[$i]&"<=")
       If FileExists ($aFiles[$i]) Then


Код
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\TeamViewer.exe
[2]|
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\TeamViewer.ini
[3]|
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\TeamViewer_Desktop.exe
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\TeamViewer_Resource_en.dll
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\TeamViewer_Resource_ru.dll
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\TeamViewer_Resource_uk.dll
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\TeamViewer_StaticRes.dll
[8]|
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\tv_w32.dll
[9]|
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\tv_w32.exe
[10]|
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\tv_x64.dll
[11]|
d:\PTAppsUpd\PortableApps\TeamViewerPortable\App\teamviewer\tv_x64.exe


 
asmadeusДата: Понедельник, 11.11.2019, 17:55 | Сообщение № 84
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Andrey_A, как всегда я косячу с этими переносами. Спасибо, теперь все норм
 
asmadeusДата: Четверг, 21.11.2019, 19:56 | Сообщение № 85
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Привет.
Такой абстрактный вопрос...
Есть внешний файл (расширение abc), в нем прописаны команды.Структура напоминает ini (имеет секции).Команды выполняются построчно через execute
В виде исходного кода поведение нормальное, а в скомпилированном виде - во внешний файл не передаются переменные.
Все переменные глобальные.
Можно натолкнуть на правильную стезю работы с такой моделью? Как заставить внешний файл видеть переменные?
Выяснил, что косячит обфускатор. Как то лечится? или только отказ от него?
 
asmadeusДата: Понедельник, 17.01.2022, 15:42 | Сообщение № 86
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Привет!
Требуется помощь в определении проблемы
Почему команда копирования папки DirCopy копирует не папку, а ее содержимое?
К примеру - функция:
Код
#Include <FileOperations.au3>
#include "_ViewValues.au3"

; Функция копирования/перемещения файлов и папок по маске
Func _copmov ($iMod, $iOp, $sP, $sM, $iInc, $sD)
    If $sM = "Def" OR $sM="" Then $sM = "*"
    Switch $iOp
  Case '1'
   $aFolder = _FO_FolderSearch($sP, $sM, $iInc, 0, 1, 1)
   For $i=1 To $aFolder[0]
    $aFolder[$i]=StringStripWS($aFolder[$i], 3)
    Switch $iMod
     Case "Copy"
      DirCopy ($aFolder[$i], $sD, 1)
     Case "Move"
      DirMove ($aFolder[$i], $sD, 1)
    EndSwitch
   Next
  Case '2'
   $aFiles = _FO_FileSearch($sP, $sM, $iInc, 0, 1, 1)
   For $i=1 To $aFiles[0]
    $aFiles[$i]=StringStripWS($aFiles[$i], 3)
    Switch $iMod
     Case "Copy"
      FileCopy ($aFiles[$i], $sD, 1)
     Case "Move"
      FileMove ($aFiles[$i], $sD, 1)
    EndSwitch
   Next
    EndSwitch
EndFunc


И вызов функции в нужном мне виде:
Код
_copmov ("Copy", 1, "d:\Work\test_func_copy\source\Firefox", "Data", False, "d:\Work\test_func_copy\dest\Firefox")


То есть копирование всех папок, кроме включенных в маску (в данном случае - кроме папки Data)
А происходит только копирование содержимого папок, а не самих папок с содержимым
То есть вместо папки
Код
App

копируются папки и файлы, вложенные в нее, такие как
Код
AppInfo
Bin
Firefox
Firefox64
readme.txt

Куда копать?
 
Andrey_AДата: Воскресенье, 23.01.2022, 16:23 | Сообщение № 87
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
asmadeus, может к каталогу назначения добавлять папку:

Код

   For $i=1 To $aFolder[0]
    $aFolder[$i]=StringStripWS($aFolder[$i], 3)
    $sFF=StringRegExpReplace($aFolder[$i],'(.*)(\\[^\\]*)','$2')
    Switch $iMod
     Case "Copy"
      DirCopy ($aFolder[$i], $sD&$sFF, 1)


.


 
asmadeusДата: Понедельник, 24.01.2022, 08:35 | Сообщение № 88
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Andrey_A, что интересно, если
Цитата
$sM (маска поиска) пустая ("*" назначается в коде)
$iInc (булевый тип) равен True ( ищем все по маске, а она пустая, то ест берем все)

то при таких условиях забирает правильно
 
Andrey_AДата: Понедельник, 04.07.2022, 11:46 | Сообщение № 89
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
Обновил UDF ViewValues.au3
http://tc-image.3dn.ru/forum/29-896-10469-16-1409500706


 
Форум » • Общение Пользователей • » Секреты мастерства » Скриптинг на AUTOIT (Учимся писать скрипты на Autoit и делимся опытом)
  • Страница 6 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Поиск:

Интеллектуальные права и отказ от ответственности