brettsp Posted September 17, 2007 Posted September 17, 2007 Hi Everyone, I apologize for begin a complete noob, I've been reading the help files for hours and I have come up blank. I have a program that converts a certain file type to another file type. I would like to automate the conversion process for all files in a directory I need a simple program that will ask the user to browse for a directory. Then the program will read the files in the directory that pass a certain file mask for example *.raw then it will execute a dos command on each one of those files that converts it to a different file type. I know I could probably do this using perl, but I wanted to make a GUI using autoit to browse for the directory Any pointers? Brett
Valuater Posted September 17, 2007 Posted September 17, 2007 Lesson #6 from Welcome to Autoit 1-2-3expandcollapse popup; includes #include <GuiConstants.au3> #include <file.au3> ; create the GUI. $win = GUICreate("File List/View Demo", 614, 370) ; set the font for the GUI GUISetFont(9, 400, -1, "MS Sans Serif") ; create buttons. $btnList = GUICtrlCreateButton("&List Files", 10, 330, 75, 25) $btnView = GUICtrlCreateButton("&View File", 85, 330, 75, 25) ; create the left list. $TutorItList = GUICtrlCreateList("", 10, 10, 150, 330) ; create the right edit. $TutorItEdit = GUICtrlCreateEdit("Please select a tutorial from the list to your left.", 175, 10, 420, 345, $ES_AUTOVSCROLL + $ES_READONLY + $ES_MULTILINE + $WS_VSCROLL) ; set the edit colors. GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetColor(-1, 0x000000) ; set focus to the edit. GUICtrlSetState($TutorItList, $GUI_FOCUS) ; show the GUI. GUISetState() ; start the loop. While 1 ; listen for a message $msg = GUIGetMsg() ; using select/case for the message Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $btnList Set_tutor() Case $msg = $btnView View_tutor() ; end the selections EndSelect WEnd ; Function to populate the left list. Func Set_tutor() $TutList = _FileListToArray (@HomeDrive & "\", "*.txt", 1) ; list files to an array. If (Not IsArray($TutList)) Or (@error = 1) Then MsgBox(262208, "Tutor Error", "No Files\Folders Found. ", 5) Return EndIf GUICtrlSetData($TutorItList, "") ; set list to empty. For $x = 1 To $TutList[0] ; for loop to place the files in the list. GUICtrlSetData($TutorItList, (StringTrimRight($TutList[$x], 4)) & "|", 1) ; string trim the last 4 characters ( .txt ) Next EndFunc ; Function to populate the right edit. Func View_tutor() $s_text = GUICtrlRead($TutorItList) ; read the selected file to a variable. If $s_text = "" Then Return $s_text = @HomeDrive & "\" & $s_text & ".txt" ; set the location of the file. Dim $Tut_text If Not _FileReadToArray($s_text, $Tut_text) Then ; read the file to an array. MsgBox(4096, "Tutor Error", " Error reading log to Array error:" & @error) Return EndIf GUICtrlSetData($TutorItEdit, "") ; set the edit to empty. For $x = 1 To $Tut_text[0] ; for loop to place the read file into the edit. GUICtrlSetData($TutorItEdit, $Tut_text[$x] & @CRLF, 1) Next EndFunc ; Note ; file read to array, reads the file ; file list to array, lists the files8)
Valuater Posted September 17, 2007 Posted September 17, 2007 changed function to ask users input ; Function to populate the left list. Func Set_tutor() $Location = FileSelectFolder("Please select a folder", @HomeDrive) ; just added 1 line for user to choose the folder $TutList = _FileListToArray ($Location, "*.txt", 1) ; list files to an array. If (Not IsArray($TutList)) Or (@error = 1) Then MsgBox(262208, "Tutor Error", "No Files\Folders Found. ", 5) Return EndIf GUICtrlSetData($TutorItList, "") ; set list to empty. For $x = 1 To $TutList[0] ; for loop to place the files in the list. GUICtrlSetData($TutorItList, (StringTrimRight($TutList[$x], 4)) & "|", 1) ; string trim the last 4 characters ( .txt ) Next EndFunc 8)
brettsp Posted September 17, 2007 Author Posted September 17, 2007 Hi Valuater, this is great thanks for the start! I like how you can list all the files in a directory that match a certain mask. Do you know if there is any way to select more than one file (shift and ctrl didn't seem to work) so I can convert more than one file at once. I presume I should use the runwait function to execute the conversion program. Cheers Brett
Valuater Posted September 18, 2007 Posted September 18, 2007 Welcome!select more than one filefrom the list... add $LBS_MULTIPLESEL$TutorItList = GUICtrlCreateList("", 10, 10, 150, 330, BitOR($LBS_SORT, $WS_BORDER, $WS_VSCROLL, $LBS_NOTIFY, $LBS_MULTIPLESEL))... and yes, RunWait() should do the trick8)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now