brettsp Posted September 17, 2007 Share 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 Link to comment Share on other sites More sharing options...
Valuater Posted September 17, 2007 Share 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) Link to comment Share on other sites More sharing options...
Valuater Posted September 17, 2007 Share 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) Link to comment Share on other sites More sharing options...
brettsp Posted September 17, 2007 Author Share 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 Link to comment Share on other sites More sharing options...
Valuater Posted September 18, 2007 Share 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) Link to comment Share on other sites More sharing options...
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