[архив - Часть 2] AutoIt скрипты

Ответить
 • Просмотры: 10
Аватара пользователя
HORRIBLE

Re: [архив - Часть 2] AutoIt скрипты

Сообщение HORRIBLE »

Как сделать поиск по маске, формат имени файла выглядит так (12_12_12.txt), в папке текстовых файлов много и у всех разный формат имени, но есть и файлы с форматом имени таким который был приведен, далее после поиска вывести массив с найденными файлами.

Я так думаю что нужно сперва воспользоваться _FileListToArray ($path ,"*.txt"), а после это этим StringRegExp (). Но я так попробовал, и ничего не вышло



StringRegExp ("12_12_12.txt 12_12_12.txt", ,'(\d\d\w\d\d\w\d\d.\w\w\w\w*?)',4) - если так писать, все прекрасно работат, находит)) а как быть с именем файла?

'(\d\d\w\d\d\w\d\d.\w\w\w\w*?)' - правильно написано или можно как нить подругому задать?







2 вопрос:



_FileCreate("1.txt")

$Array1 = _FileListToArray ($path ,"*.au3")

$Array2 = _ArrayToclip($1)

fileWrite("1.txt",ClipGet())



когда информация (имена присутствующих файлов в папке) записываается в файлик она разделяется @LF, а как сделать так чтоб информация разделялась, а Enter-ом, чтобы каждое название файла начиналось с новой строки.



Спасибо.
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

HORRIBLE,
Цитата:



Как сделать поиск по маске, формат имени файла выглядит так (12_12_12.txt), в папке текстовых файлов много и у всех разный формат имени, но есть и файлы с форматом имени таким который был приведен, далее после поиска вывести массив с найденными файлами.



_FileListToArray вернёт массив, поэтому проходиться нужно по всему массиву циклом:





Код:

Код: Выделить всё

#include 
#include 
$sPath = @ScriptDir
$avArray = _RegExpFileListToArray($sPath, "(?i)\d+_\d+_\d+\.txt", "*.txt")
_ArrayDisplay($avArray)
Func _RegExpFileListToArray($sPath, $sPattern, $sMask="*")
    Local $aRet[1]
    $aFileList = _FileListToArray($sPath, $sMask)
    For $i = 1 To UBound($aFileList)-1
        If StringRegExp($aFileList[$i], $sPattern) Then
            $aRet[0] += 1
            ReDim $aRet[$aRet[0]+1]
            $aRet[$aRet[0]] = $aFileList[$i]
        EndIf
    Next
    Return $aRet
EndFunc

Если всегда цифр будет только две (между каждым разделителем), то \d+ нужно заменить на \d\d.




Цитата:



как сделать так чтоб информация разделялась, а Enter-ом, чтобы каждое название файла начиналось с новой строки.



А зачем использовать буфер обмена? есть функция _FileWriteFromArray() Изображение.



Функция _ArrayToClip() помещет строчки в буфер обмена разделённые @CR (возврат каретки).
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

HORRIBLE,
Цитата:



откуда такие команды??? у меня в хелпе по авто иту нету такого, вы че сами их придумавыете?



Сами Изображение - по сути _FileListToArray() (и все функции начинающиеся с _ ) тоже самопальная функция.




Цитата:



что такое $sPattern оно же не где не задано.



Оно задано как параметр для фунции, я просто как второй параметр указываю образец (Pattern) для RegExp.




Цитата:



как это понять, тип либой файл чтоли?



Это маска, по которой определяется параметры для поиска файлов, см. функцию FileFindFirstFile().
Аватара пользователя
TERMINAL

Re: [архив - Часть 2] AutoIt скрипты

Сообщение TERMINAL »

Creat0R, не могу заставить выключиться Send("{CAPSLOCK off}") !
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

TERMINAL,


Цитата:



не могу заставить выключиться Send("{CAPSLOCK off}") !



В справке по этому поводу что-то написано:




Цитата:



You can set SendCapslockMode to make CAPS LOCK disabled at the start of a Send operation and restored upon completion.

However, if a user is holding down the Shift key when a Send function begins, text may be sent in uppercase.

One workaround is to Send("{SHIFTDOWN}{SHIFTUP}") before the other Send operations.



Certain keyboard as the Czech one send different characters when using the Shift Key or being in CAPS LOCK enabled and sending a char. Due to the send AutoIt implementation the CAPS LOCKed char will be sent as Shifted one so it will not work.



а Send("{CAPSLOCK toggle}") работает?
Аватара пользователя
TERMINAL

Re: [архив - Часть 2] AutoIt скрипты

Сообщение TERMINAL »

Creat0R, не неработает, а Num Lock работает....
Аватара пользователя
TERMINAL

Re: [архив - Часть 2] AutoIt скрипты

Сообщение TERMINAL »

Creat0R, добрый день!Пишу Вам, т.к. прочитал ваши сообщения на форуме - очень пригодилось. До этого очень много делал программок для работы на VB.

Впервые попробовал Autoit, когда понадобилось перенести данные с листа Excel в Axata.Понравилось.

Вопрос - можно ли объединить Autoit и VB. И второй очень срочный - есть ли скрипт позволяющий работать с Listview,

как с листом ексель, т.е. вводить данные с клавиатуры во все колонки, редактировать и т.д.

Заранее благодарен.
Аватара пользователя
rimm

Re: [архив - Часть 2] AutoIt скрипты

Сообщение rimm »

Прошу кто может помочь с английским переводом описаний функций "Автоматизация MS Internet Explorer", к сожалению в русской справке от Валерия Иванова этот раздел не переведен, самому мне перевести не представляется возможным.

Спасибо всем кто помогал мне в прошлый раз.
Аватара пользователя
rimm

Re: [архив - Часть 2] AutoIt скрипты

Сообщение rimm »

Vikma19

Хоть вопрос и не ко мне...


Цитата:



можно ли объединить Autoit и VB.



VB-script? Можно создавать обьекты и управлять ими как в WSH, пример копирования файлов с отображением системного диалога копирования:



Код:

Код: Выделить всё

_FileCopy("D:\wallpaper\*.*", "C:\wallpaper")
Func _FileCopy($Source, $Dest)
    If Not FileExists($Dest) Then DirCreate($Dest)
    $WinShell = ObjCreate("shell.application")
    $WinShell.NameSpace($Dest).CopyHere($Source)
EndFunc


Цитата:



второй очень срочный - есть ли скрипт позволяющий работать с Listview,

как с листом ексель, т.е. вводить данные с клавиатуры во все колонки, редактировать и т.д.



Ну как в Excel вряд ли, но в справке есть примеры редактирования Item-ов, вот немного изменённый пример из справки:



Код:

Код: Выделить всё

#include 
#include 
$Gui = GUICreate("Test", 300, 200)
$hListView = _GUICtrlListView_Create($GUI, "Items|SubItems", 2, 2, 296, 196, BitOR($LVS_EDITLABELS, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
$ListItem1 = _GUICtrlListView_AddItem($hListView, "Item1")
$ListItem2 = _GUICtrlListView_AddItem($hListView, "Item2")
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()
While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
        ExitLoop
    EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
        Switch $iCode
        Case $LVN_BEGINLABELEDIT
            Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
            Return False
        Case $LVN_ENDLABELEDIT
            Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
            Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
            If StringLen(DllStructGetData($tBuffer, "Text")) Then Return True
            EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc

rimm


Цитата:



кто может помочь с английским переводом описаний функций "Автоматизация MS Internet Explorer"



А какая именно функция не понятна?



P.S.

Переводить на русский все функции, вряд-ли кто будет, так, как на это нужно время, а по отдельным, спрашивай, чем сможем поможем. Изображение
Аватара пользователя
Vikma19

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Vikma19 »

Maza Faka, Большое спасибо! Попробую разобраться.
Ответить

Вернуться в «AutoIt»