Что нового

Помогите довести скрипт до ума

Сообщения
95
Репутация
-1
Доброе время суток. Помогите довести скрипт до ума. Имеется скрипт, который производит поиск и действия с файлами и папками. Нужно вывести список найденных файлов в окно с чекбоксами и над выбранными файлами будут производиться действия , чтобы не подтверждать постоянно кнопками да или нет
Код:
#include <MsgBoxConstants.au3>

Portable()

Func Portable()
    Local $hSearch = FileFindFirstFile("_portable\*.*")

    If $hSearch = -1 Then
        MsgBox($MB_SYSTEMMODAL, "", "Ошибка: Ни один файл/каталог не соответствует шаблону поиска.")
        Return False
    EndIf

    Local $sFileName = "", $iResult = 0

    While 1
        $sFileName = FileFindNextFile($hSearch)
        If @error Then ExitLoop
        $iResult = MsgBox(BitOR($MB_SYSTEMMODAL, $MB_YESNOCANCEL), "", "File: " & $sFileName)
If $iResult = $IDYES Then ShellExecuteWait(@ScriptDir & '\bin\7z.exe','a "' & @ScriptDir & '\Pack\' & $sFileName & '.7z" "' & @ScriptDir & '\_portable\' & $sFileName & '\*" -mx9 -myx=9 -r0 -t7z -m0=BCJ2 -m1=lzma2:d192m:fb64 -m2=lzma:d20:lc0:lp2:fb64 -m3=lzma:d20:lc0:lp2:fb64 -mb0:1 -mb0s1:2 -mb0s2:3 -mmt4','','',@SW_HIDE)
If $iResult = $IDYES Then RunWait(@ComSpec & ' /c copy /b ' & @ScriptDir & '\_sfx\' & $sFileName & '.sfx' & '+' & @ScriptDir & '\_ini\_portable\' & $sFileName & '.ini' & '+' & @ScriptDir & '\Pack\' & $sFileName & '.7z' & ' ' & @ScriptDir & '\Exe\' & $sFileName & '.exe')
If $iResult = $IDCANCEL Then ExitLoop
    WEnd
    FileClose($hSearch)
EndFunc
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Создайте GUI с таблицей имеющей стиль $LVS_EX_CHECKBOXES и кнопкой "Выполнить" (назвать можно по другому). В таблицу добавляете файлы. После нажания на кнопку "Выполнить" анализируете состояние чекбоксов в таблице и если галочка есть, выполняете действие с файлом.
 
Автор
Xabib2302
Сообщения
95
Репутация
-1
Создайте GUI с таблицей имеющей стиль $LVS_EX_CHECKBOXES и кнопкой "Выполнить" (назвать можно по другому). В таблицу добавляете файлы. После нажания на кнопку "Выполнить" анализируете состояние чекбоксов в таблице и если галочка есть, выполняете действие с файлом.
Хотелось бы видеть код т.к. я не особо владею autoit только базовыми функциями.
 

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
Хотелось бы видеть код
Код:
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <FileOperations.au3>
; #include <Array.au3>

$aFileList=_FO_FileSearch('C:','*',1,0)
$aListView=$aFileList
$hGUI=GUICreate('ListView',400,500,-1,-1)
$ListView=GUICtrlCreateListView("Список файлов",10,10,380,450,0,$LVS_EX_CHECKBOXES)
GUICtrlSendMsg($ListView,$LVM_SETCOLUMNWIDTH,0,380)
For $i=1 To $aFileList[0]
  $aListView[$i]=GUICtrlCreateListViewItem($aFileList[$i], $ListView)
Next
$idList=GUICtrlCreateButton("Список",400-80,500-30,70,25)
GUISetState()
While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idList
      $sList=''
      For $i=1 To $aFileList[0]
        If 1=GUICtrlRead($aListView[$i],1)Then $sList&=$aFileList[$i]&@CRLF
      Next
      MsgBox(4096,'$sList',$sList)
  EndSwitch
WEnd
 
Последнее редактирование:
Автор
Xabib2302
Сообщения
95
Репутация
-1
Возможно ли реализовать, чтобы действия (например ShellExecuteWait) производились с каждым выбранным файлом по очереди?
Код:
ShellExecuteWait(@ScriptDir & '\bin\7z.exe','a "' & @ScriptDir & '\Pack\' & $sList & '.7z" "' & @ScriptDir & '\_portable\' & $sList & '\*" -mx9 -myx=9 -r0 -t7z -m0=BCJ2 -m1=lzma2:d192m:fb64 -m2=lzma:d20:lc0:lp2:fb64 -m3=lzma:d20:lc0:lp2:fb64 -mb0:1 -mb0s1:2 -mb0s2:3 -mmt4','','',@SW_HIDE)
 

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
с каждым выбранным файлом по очереди
У вас же есть цикл, в котором файлы получаются по очереди, поставьте в цикле, то что вам нужно
Код:
For $i=1 To $aFileList[0]
        If 1=GUICtrlRead($aListView[$i],1)Then
          $sFile=$aFileList[$i]
          ShellExecuteWait("...."&$sFile&"....")
       EndIf
Next
 
Верх