Что нового

[Файловая система] Вроде, проблема с GUI

TotKtoNado96

Новичок
Сообщения
7
Репутация
0
Для сортировки файлов. Что я делаю не так? есть другие идеи?


Код:
#include <File.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

Local $m1, $m2, $m3, $f1, $f2, $f3, $BtnOk, $msg, $sText

MsgBox (0, "enter filemasks", "три окна с вводом маски")

$hGui = GUICreate("GUI", 530, 160, @DesktopWidth / 2 - 190, @DesktopHeight / 2 - 80, -1, $WS_EX_ACCEPTFILES)
;маски
$m1 = GUICtrlCreateInput('маска1', 10, 5, 250, 20)
$m2 = GUICtrlCreateInput('маска2', 10, 30, 250, 20)
$m3 = GUICtrlCreateInput('маска3', 10, 55, 250, 20)
;папки
$f1 = GUICtrlCreateInput('папка1', 270, 5, 250, 20)
$f2 = GUICtrlCreateInput('папка2', 270, 30, 250, 20)
$f3 = GUICtrlCreateInput('папка3', 270, 55, 250, 20)

$BtnOk = GUICtrlCreateButton("OK", (380 - 70) / 2, 127, 70, 26)

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $BtnOk
            $sText = 'Garaş'
    EndSwitch
WEnd
GUISetState()


$f = @ScriptDir ;папка, в которой искать
$f1_read = @ScriptDir & '/' & GuiCtrlRead($f1) ;пути к папкам, куда надо фасовать
$f2_read = @ScriptDir & '/' & GuiCtrlRead($f2)
$f3_read = @ScriptDir & '/' & GuiCtrlRead($f3)

$aFile = _FileListToArray($f, Default, 1)

If Not @error Then
    For $i = 1 To $aFile[0]
        If StringInStr($f&'\'&$aFile[$i], GuiCtrlRead($m1)) Then FileMove($f & '\' & $aFile[$i], $f1_read, 8)
        If StringInStr($f&'\'&$aFile[$i], GuiCtrlRead($m2)) Then FileMove($f & '\' & $aFile[$i], $f2_read, 8)
        If StringInStr($f&'\'&$aFile[$i], GuiCtrlRead($m3)) Then FileMove($f & '\' & $aFile[$i], $f2_read, 8)
    Next
EndIf
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Что я делаю не так?
"GUISetState()" не туда поставили , нужно перед циклом .
И то , что у Вас после цикла выполнится только в момент завершения работы скрипта (после закрытия окна GUI), если действие по кнопке "Ок" - "Garaş" это название функции, тогда как-то так:
Код:
#include <File.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

Local $m1, $m2, $m3, $f1, $f2, $f3, $BtnOk, $msg, $sText

MsgBox(0, "enter filemasks", "три окна с вводом маски")

$hGui = GUICreate("GUI", 530, 160, @DesktopWidth / 2 - 190, @DesktopHeight / 2 - 80, -1, $WS_EX_ACCEPTFILES)
;маски
$m1 = GUICtrlCreateInput('маска1', 10, 5, 250, 20)
$m2 = GUICtrlCreateInput('маска2', 10, 30, 250, 20)
$m3 = GUICtrlCreateInput('маска3', 10, 55, 250, 20)
;папки
$f1 = GUICtrlCreateInput('папка1', 270, 5, 250, 20)
$f2 = GUICtrlCreateInput('папка2', 270, 30, 250, 20)
$f3 = GUICtrlCreateInput('папка3', 270, 55, 250, 20)

$BtnOk = GUICtrlCreateButton("OK", (380 - 70) / 2, 127, 70, 26)
GUISetState()
While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $BtnOk
			Garaş()
	EndSwitch
WEnd


Func Garaş()
	$f = @ScriptDir ;папка, в которой искать
	$f1_read = @ScriptDir & '/' & GUICtrlRead($f1) ;пути к папкам, куда надо фасовать
	$f2_read = @ScriptDir & '/' & GUICtrlRead($f2)
	$f3_read = @ScriptDir & '/' & GUICtrlRead($f3)

	$aFile = _FileListToArray($f, Default, 1)

	If Not @error Then
		For $i = 1 To $aFile[0]
			If StringInStr($f & '\' & $aFile[$i], GUICtrlRead($m1)) Then FileMove($f & '\' & $aFile[$i], $f1_read, 8)
			If StringInStr($f & '\' & $aFile[$i], GUICtrlRead($m2)) Then FileMove($f & '\' & $aFile[$i], $f2_read, 8)
			If StringInStr($f & '\' & $aFile[$i], GUICtrlRead($m3)) Then FileMove($f & '\' & $aFile[$i], $f2_read, 8)
		Next
	EndIf
EndFunc

OffTopic:
Этот же вопрос и в другой теме...
 
Верх