Dateiauswahl & öffnen per GUI

  • Ich mal wieder... ganz auf die Schnelle *g

    Ich möchte gerne eine Gui haben, die mir beim Öffnen der sich hier angesammelten Skripte hilft. (Ich will mich nicht mehr durch die Verzeichnisse hangeln, dafür gibt es AutoIt! *lach) Grundgedanke ist das Skript "treeview.au3", welches als Beispiel bei AutoIt im Verzeichnis "...\Examples\GUI\Advanced\" zu finden ist.

    Hier das Skript:

    Spoiler anzeigen

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <TreeViewConstants.au3>

    Opt('MustDeclareVars', 1)

    _Main()

    Func _Main()
    Local $maintree, $aboutitem, $generalitem, $toolsitem, $effectitem, $styleitem
    Local $cmditem, $miscitem, $descgroup, $effectsgroup, $effectstree
    Local $effect1, $effect2, $effect3, $effect4, $effect5
    Local $stylesgroup, $stylestree, $style1, $style2, $style3, $style4, $style5
    Local $aboutlabel, $cancelbutton, $msg

    #forceref $cmditem, $miscitem, $effect2, $effect4, $effect5, $style1, $style2, $style3

    GUICreate("GUI with more treeviews", 340, 200, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_GROUP, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU))

    $maintree = GUICtrlCreateTreeView(10, 10, 120, 150)
    $aboutitem = GUICtrlCreateTreeViewItem("About", $maintree)
    $generalitem = GUICtrlCreateTreeViewItem("General", $maintree)
    $toolsitem = GUICtrlCreateTreeViewItem("Tools", $maintree)
    $effectitem = GUICtrlCreateTreeViewItem("Effects", $generalitem)
    $styleitem = GUICtrlCreateTreeViewItem("Styles", $generalitem)
    $cmditem = GUICtrlCreateTreeViewItem("Commandline", $toolsitem)
    $miscitem = GUICtrlCreateTreeViewItem("Misc", $toolsitem)

    $descgroup = GUICtrlCreateGroup("Description", 140, 105, 180, 55)
    GUICtrlSetState(-1, $GUI_HIDE)

    $effectsgroup = GUICtrlCreateGroup("Effects", 140, 5, 180, 95)
    GUICtrlSetState(-1, $GUI_HIDE)
    $effectstree = GUICtrlCreateTreeView(150, 20, 160, 70, BitOR($TVS_CHECKBOXES, $TVS_DISABLEDRAGDROP), $WS_EX_CLIENTEDGE)
    GUICtrlSetState(-1, $GUI_HIDE)
    $effect1 = GUICtrlCreateTreeViewItem("Effect 1", $effectstree)
    $effect2 = GUICtrlCreateTreeViewItem("Effect 2", $effectstree)
    $effect3 = GUICtrlCreateTreeViewItem("Effect 3", $effectstree)
    $effect4 = GUICtrlCreateTreeViewItem("Effect 4", $effectstree)
    $effect5 = GUICtrlCreateTreeViewItem("Effect 5", $effectstree)

    $stylesgroup = GUICtrlCreateGroup("Styles", 140, 5, 180, 95)
    GUICtrlSetState(-1, $GUI_HIDE)
    $stylestree = GUICtrlCreateTreeView(150, 20, 160, 70, BitOR($TVS_CHECKBOXES, $TVS_DISABLEDRAGDROP), $WS_EX_CLIENTEDGE)
    GUICtrlSetState(-1, $GUI_HIDE)
    $style1 = GUICtrlCreateTreeViewItem("Style 1", $stylestree)
    $style2 = GUICtrlCreateTreeViewItem("Style 2", $stylestree)
    $style3 = GUICtrlCreateTreeViewItem("Style 3", $stylestree)
    $style4 = GUICtrlCreateTreeViewItem("Style 4", $stylestree)
    $style5 = GUICtrlCreateTreeViewItem("Style 5", $stylestree)

    $aboutlabel = GUICtrlCreateLabel("This is only a treeview demo.", 160, 80, 160, 20)

    $cancelbutton = GUICtrlCreateButton("Cancel", 130, 170, 70, 20)
    GUISetState()

    GUICtrlSetState($effect1, $GUI_CHECKED)
    GUICtrlSetState($effect3, $GUI_CHECKED)
    GUICtrlSetState($style4, $GUI_CHECKED)
    GUICtrlSetState($style5, $GUI_CHECKED)

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = -3 Or $msg = -1 Or $msg = $cancelbutton
    ExitLoop
    Case $msg = $aboutitem
    GUICtrlSetState($descgroup, $GUI_HIDE)
    GUICtrlSetState($effectstree, $GUI_HIDE)
    GUICtrlSetState($effectsgroup, $GUI_HIDE)
    GUICtrlSetState($stylestree, $GUI_HIDE)
    GUICtrlSetState($stylesgroup, $GUI_HIDE)
    GUICtrlSetState($aboutlabel, $GUI_SHOW)

    Case $msg = $effectitem
    GUICtrlSetState($stylestree, $GUI_HIDE)
    GUICtrlSetState($stylesgroup, $GUI_HIDE)
    GUICtrlSetState($aboutlabel, $GUI_HIDE)
    GUICtrlSetState($effectsgroup, $GUI_SHOW)
    GUICtrlSetState($descgroup, $GUI_SHOW)
    GUICtrlSetState($effectstree, $GUI_SHOW)
    GUICtrlSetBkColor($effectstree, 0xD0F0F0)
    ;GUIctrlSetState...($effectstree,$GUI_SHOW)

    Case $msg = $styleitem
    GUICtrlSetState($effectstree, $GUI_HIDE)
    GUICtrlSetState($effectsgroup, $GUI_HIDE)
    GUICtrlSetState($aboutlabel, $GUI_HIDE)
    GUICtrlSetState($stylesgroup, $GUI_SHOW)
    GUICtrlSetState($descgroup, $GUI_SHOW)
    ;GUIctrlSetState.($stylestree,$GUI_SHOW)
    GUICtrlSetState($stylestree, $GUI_SHOW)
    GUICtrlSetColor($stylestree, 0xD00000)
    GUICtrlSetBkColor($stylestree, 0xD0FFD0)

    EndSelect
    WEnd

    GUIDelete()
    Exit
    EndFunc ;==>_Main


    Und hier das Bild:

    [Blockierte Grafik: http://s6.directupload.net/images/080924/6qu6t7ue.jpg]

    Jetzt möchte ich aber gern, das es mir automatisch einen bestimmten Ordner auf meiner Festplatte ausliest (den mit den Skripten) und ich mit einem OK-Button diese(s) Skript(e) öffnen kann.

    Ich fürchte, das muß über FileFindFirstFile, FileFindNextFile, eine While-WEnd-Schleife und über Listview(?) realisiert werden. Liege ich damit soweit richtig, oder ist schon der Ansatz falsch?

    Liebe Grüße,
    Reinhold.

    Einmal editiert, zuletzt von Arioch (4. November 2008 um 09:30)

  • Ja du liegst richtig mit deiner Vermutung.
    Es gibt aber super Beispiele in der Doku zu FindFileFirst und Next.

    Viel Spaß beim testen und zum optimieren einfach hier den Quelltext posten. :D Nee Natürlich nur wenn Script fertig oder Fehler auftreten die sich nicht lösen lassen :rofl:

    MfG
    Der_Doc

  • Hallo Reinhold,

    ich habe so etwas ähnliches gemacht allerdings nicht mit treeview sondern lese den Ordner mit _FileListToArray aus und erstelle dann checkboxen.
    Mit denen kann ich dann auswählen welche Scripte laufen sollen!!

    Gruß Icerose

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #Include <File.au3>
    #Include <Array.au3>
    #Include <GuiListBox.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $SS_SUNKEN = 0x1000
    $SS_CENTER = 0x01

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    FileDelete(@TempDir & "\au3.txt")
    Opt("OnExitFunc", "endscript")
    Dim $TInfo, $R_[7], $Temp_File, $Temp_Type = StringSplit(".au3,.txt,.ini,.dat,.log,", ",")
    Dim $Last_loc = "C:\Program Files\AutoIt3\Examples"
    $AutoItBetaLocation = IniRead(@ScriptDir & "\IE-library.ini", "exe", "dir", "")
    $Program_2 = $AutoItBetaLocation & "\Autoit3.exe"

    [/autoit] [autoit][/autoit] [autoit]

    $maingui = GUICreate("Script/Text Manager v1.0.6", 500, 365)
    GUISetFont(9, 400, -1, "MS Sans Serif")
    $vStatus = GUICtrlCreateLabel("View: Search Window", 0, 350, 130, 15, $SS_SUNKEN + $SS_CENTER)
    GUICtrlCreateLabel("Manager Status:", 130, 350, 120, 15, $SS_SUNKEN + $SS_CENTER)
    $Status = GUICtrlCreateLabel("System is Ready...", 250, 350, 250, 15, $SS_SUNKEN + $SS_CENTER)
    GUICtrlSetColor(-1, 0xff0000)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $searchgui = GUICreate("Script Finder", 500, 350, 0, 0, $WS_CHILD + $WS_BORDER, "", $maingui)
    GUISetFont(9, 400, -1, "MS Sans Serif")
    $location = GUICtrlCreateInput($Last_loc, 20, 20, 340, 20)
    $C_browse = GUICtrlCreateCheckbox("All Sub-Folders", 380, 20, 100, 20)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $browse_btn = GUICtrlCreateButton("Browse Folders", 380, 50, 100, 20)
    $R_word = GUICtrlCreateRadio("", 20, 50, 20, 20)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $word_search = GUICtrlCreateInput("Search word/phrase", 40, 50, 145, 20)
    $R_title = GUICtrlCreateRadio("", 195, 50, 20, 20)
    $title_search = GUICtrlCreateInput("Search FileName/Folder", 215, 50, 145, 20)
    GUICtrlCreateGroup('File Type', 20, 78, 340, 38)
    $R_[1] = GUICtrlCreateRadio(".au3", 30, 92, 50, 20)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $R_[2] = GUICtrlCreateRadio(".txt", 80, 92, 50, 20)
    $R_[3] = GUICtrlCreateRadio(".ini", 130, 92, 50, 20)
    $R_[4] = GUICtrlCreateRadio(".dat", 180, 92, 50, 20)
    $R_[5] = GUICtrlCreateRadio(".log", 230, 92, 50, 20)
    $R_[6] = GUICtrlCreateRadio("", 280, 92, 15, 20)
    $R_Input = GUICtrlCreateInput("Type", 298, 90, 50, 20)
    $go_btn = GUICtrlCreateButton("Start Search", 380, 85, 100, 30)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $Edit1 = GUICtrlCreateList("Found File list", 20, 130, 460, 150, BitOR($LBS_SORT, $WS_BORDER, $WS_VSCROLL, $LBS_NOTIFY, $LBS_DISABLENOSCROLL, $WS_HSCROLL))
    _GUICtrlListBox_SetHorizontalExtent ($Edit1, 720)
    $label = GUICtrlCreateLabel("Files Found with Phrase: None", 140, 290, 220, 20, $SS_SUNKEN + $SS_CENTER)
    $label2 = GUICtrlCreateLabel("Files Found: None", 20, 290, 100, 20, $SS_SUNKEN + $SS_CENTER)
    $manage_btn = GUICtrlCreateButton("Manage View", 20, 320, 100, 20)
    $view_btn = GUICtrlCreateButton("View File", 140, 320, 100, 20)
    $SciTE_btn = GUICtrlCreateButton("Open in SciTE", 260, 320, 100, 20)
    $Run_btn = GUICtrlCreateButton("Run File", 380, 290, 100, 20)
    $Exit_btn = GUICtrlCreateButton("Close", 380, 320, 100, 20)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $filesgui = GUICreate("Script Finder", 500, 350, 0, 0, $WS_CHILD + $WS_BORDER, "", $maingui)
    $Edit2 = GUICtrlCreateList("Searched File list", 20, 20, 460, 270, BitOR($LBS_SORT, $WS_BORDER, $WS_VSCROLL, $LBS_NOTIFY, $LBS_DISABLENOSCROLL, $WS_HSCROLL))
    _GUICtrlListBox_SetHorizontalExtent ($Edit2, 720)
    $Search_btn = GUICtrlCreateButton("Search View", 20, 320, 100, 20)
    $copy_btn = GUICtrlCreateButton("Copy File", 140, 320, 100, 20)
    $rename_btn = GUICtrlCreateButton("Rename File", 260, 320, 100, 20)
    $Delete_btn = GUICtrlCreateButton("Delete File", 380, 320, 100, 20)
    $labelA = GUICtrlCreateLabel("Files Found with Phrase: None", 140, 290, 220, 20, $SS_SUNKEN + $SS_CENTER)
    $label2A = GUICtrlCreateLabel("Files Found: None", 20, 290, 100, 20, $SS_SUNKEN + $SS_CENTER)
    $Run_btnA = GUICtrlCreateButton("Run File", 380, 290, 100, 20)
    GUISetState(@SW_HIDE)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $Exit_btn
    Exit
    Case $msg = $browse_btn
    GUICtrlSetData($Status, "Selecting Folder to Search...")
    $find_loc = FileSelectFolder("Choose a Folder.", "")
    If $find_loc = "" Then ContinueLoop
    GUICtrlSetData($location, $find_loc)
    IniWrite(@ScriptDir & "\IE-library.ini", "search", "dir", $find_loc)
    Case $msg = $go_btn
    search_Folders()
    GUICtrlSetState($word_search, $GUI_FOCUS)
    Case $msg = $view_btn
    view()
    Case $msg = $copy_btn
    Set_Copy()
    Case $msg = $rename_btn
    Set_Rename()
    Case $msg = $Delete_btn
    Set_Delete()
    Case $msg = $Run_btn
    $TInfo = GUICtrlRead($Edit1)
    Set_Run($TInfo)
    Case $msg = $Run_btnA
    $TInfo = GUICtrlRead($Edit2)
    Set_Run($TInfo)
    Case $msg = $SciTE_btn
    open_SciTE()
    Case $msg = $manage_btn
    GUICtrlSetData($vStatus, "View: Manage Window")
    GUISetState(@SW_HIDE, $searchgui)
    GUISetState(@SW_SHOW, $filesgui)
    view_all()
    Case $msg = $Search_btn
    GUICtrlSetData($vStatus, "View: Search Window")
    GUISetState(@SW_HIDE, $filesgui)
    GUISetState(@SW_SHOW, $searchgui)
    EndSelect
    GUICtrlSetData($Status, "System is Ready...")
    Sleep(20)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func search_Folders()
    If Set_File() = -1 Then Return
    GUICtrlSetData($Status, "Searching for Files...")
    FileDelete(@TempDir & "\au3.txt")
    $Found = 0
    $Searched = 0
    $title = 0
    GUICtrlSetData($label, "Files Found with Phrase: " & $Found)
    GUICtrlSetData($labelA, "Files Found with Phrase: " & $Found)
    GUICtrlSetData($label2, "Files Found: " & $Searched)
    GUICtrlSetData($label2A, "Files Found: " & $Searched)
    GUICtrlSetData($Edit1, "")
    GUICtrlSetData($Edit2, "")
    $Temp_Dir = (GUICtrlRead($location))
    If $Temp_Dir = "" Then
    GUICtrlSetData($Status, "No Folder Selected...")
    MsgBox(262208, "Sorry", "No Folders Selected. ", 2)
    Return
    EndIf
    If StringRight($Temp_Dir, 1) <> "\" Then $Temp_Dir = $Temp_Dir & "\"
    $Temp_Word = (GUICtrlRead($word_search))
    If GUICtrlRead($C_browse) = 1 Then
    GUICtrlSetData($Status, "Searching in Sub-Folders...PLEASE WAIT")
    RunWait(@ComSpec & ' /c ' & 'dir "' & $Temp_Dir & $Temp_File & '" /a :h /b /s' & ' > "' & @TempDir & '\au3.txt"', '', @SW_HIDE)
    Else
    GUICtrlSetData($Status, "Searching in Local Folder...")
    $FileList = _FileListToArray($Temp_Dir, $Temp_File, 1)
    If (Not IsArray($FileList)) Or (@error = 1) Then
    GUICtrlSetData($Status, "No Files Found...")
    MsgBox(262208, "Sorry", "No Files Found.", 2)
    Return
    EndIf
    $F_File = FileOpen(@TempDir & "\au3.txt", 2)
    For $x = 1 To $FileList[0]
    FileWriteLine($F_File, $Temp_Dir & $FileList[$x])
    Next
    FileClose($F_File)
    EndIf
    GUICtrlSetData($Status, "Listing...")
    If GUICtrlRead($R_title) = 1 Then
    $Temp_Word = (GUICtrlRead($title_search))
    $title = 1
    EndIf
    $hFile = FileOpen(@TempDir & "\au3.txt", 0)
    While 1
    $sLine = FileReadLine($hFile)
    If @error = -1 Then
    FileClose($hFile)
    Return
    EndIf
    $Temp_Dir = $sLine
    If $title = 0 Then $Temp_Search = FileRead($sLine, FileGetSize($sLine))
    If $title = 1 Then $Temp_Search = $sLine
    If StringInStr($Temp_Search, $Temp_Word) Then
    GUICtrlSetData($Edit1, $sLine, 1)
    $Found = $Found + 1
    GUICtrlSetData($label, "Files Found with Phrase: " & $Found)
    GUICtrlSetData($labelA, "Files Found with Phrase: " & $Found)
    EndIf
    $Searched = $Searched + 1
    GUICtrlSetData($label2, "Files Found: " & $Searched)
    GUICtrlSetData($label2A, "Files Found: " & $Searched)
    GUICtrlSetData($Status, "Searched:" & $sLine)
    WEnd
    FileClose($hFile)
    EndFunc ;==>search_Folders

    [/autoit] [autoit][/autoit] [autoit]

    Func view()
    GUICtrlSetData($Status, "Viewing in Notepad...")
    $Temp_Edit = GUICtrlRead($Edit1)
    $Temp_Word = (GUICtrlRead($word_search))
    If $Temp_Edit = "" Or $Temp_Edit = "Found File list" Then
    GUICtrlSetData($Status, "No File/Folder Selected...")
    MsgBox(262208, "Sorry", "No Files\Folders Selected. ", 2)
    Return
    EndIf
    Run("notepad.exe " & $Temp_Edit)
    WinWaitActive("")
    If GUICtrlRead($R_title) = 1 Then Return
    GUICtrlSetData($Status, "Searching Notepad...")
    Sleep(200)
    Send("!EF")
    Sleep(200)
    Send($Temp_Word, 1)
    Sleep(200)
    Send("!f")
    EndFunc ;==>view

    [/autoit] [autoit][/autoit] [autoit]

    Func view_all()
    GUICtrlSetData($Status, "Viewing Manager Window...")
    If Not FileExists(@TempDir & "\au3.txt") Then
    GUICtrlSetData($Status, "No Searches Were Completed...")
    MsgBox(262208, "Sorry", "No Files\Folders Searched. ", 2)
    Return
    EndIf
    GUICtrlSetData($Edit2, "")
    $vFile = FileOpen(@TempDir & "\au3.txt", 0)
    While 1
    $vLine = FileReadLine($vFile)
    If @error = -1 Then ExitLoop
    GUICtrlSetData($Edit2, $vLine, 1)
    GUICtrlSetData($Status, "Setting Files: " & $vLine)
    WEnd
    EndFunc ;==>view_all

    [/autoit] [autoit][/autoit] [autoit]

    Func Set_Run(ByRef $TInfo)
    GUICtrlSetData($Status, "Setting up Run Command...")
    If $TInfo = "" Or $TInfo = "Found File list" Or $TInfo = "Searched File list" Then
    GUICtrlSetData($Status, "No File Selected to Run...")
    MsgBox(262208, "Sorry", "No Run File was Selected. ", 2)
    Return
    EndIf
    If GUICtrlRead($R_[6]) = 1 And StringInStr($TInfo, ".au3") = 0 Then
    GUICtrlSetData($Status, "Running File...")
    $TInfo = FileGetShortName($TInfo)
    ShellExecute($TInfo)
    $TInfo = ""
    Return
    EndIf
    If StringInStr($TInfo, ".au3") = 0 Then
    GUICtrlSetData($Status, "File Not an Au3 Type...")
    MsgBox(262208, "Sorry", "Run File was NOT an *au3* Type. " & @CRLF & @CRLF & "Opening File in Notepad ", 2)
    GUICtrlSetData($Status, "Viewing in Notepad...")
    Run("notepad.exe " & $TInfo)
    $TInfo = ""
    Return
    EndIf
    $TInfo = FileGetShortName($TInfo)
    GUICtrlSetData($Status, "Running File...")
    RunWait($Program_2 & " " & $TInfo)
    $TInfo = ""
    EndFunc ;==>Set_Run

    [/autoit] [autoit][/autoit] [autoit]

    Func Set_Copy()
    GUICtrlSetData($Status, "Setting up Copy...")
    $CInfo = GUICtrlRead($Edit2)
    If $CInfo = "" Or $CInfo = "Found File list" Or $CInfo = "Searched File list" Then
    GUICtrlSetData($Status, "No File Selected to Copy...")
    MsgBox(262208, "Sorry", "No Copy File was Selected. ", 2)
    Return
    EndIf
    GUICtrlSetData($Status, "Find Destination Folder...")
    $Linfo = FileSelectFolder("Choose a Destination Folder.", "")
    If $Linfo = "" Then
    GUICtrlSetData($Status, "No Folder Selected...")
    MsgBox(262208, "Sorry", "No Destination Folder was Selected. ", 2)
    Return
    EndIf
    $NInfo = StringSplit($CInfo, "\")
    $NInfo = $Linfo & "\" & $NInfo[$NInfo[0]]
    GUICtrlSetData($Status, "Checking if file exists...")
    If FileExists($NInfo) Then
    $iMsgBoxAnswer = MsgBox(262212, "Overwrite Existing File?", "The File " & $NInfo & " was found " & @CRLF & @CRLF & "Over-Write File?")
    If $iMsgBoxAnswer = 7 Then
    Return
    EndIf
    EndIf
    GUICtrlSetData($Status, "Copying File...")
    $var1 = FileCopy($CInfo, $NInfo, 1)
    If $var1 = 1 Then
    MsgBox(262208, "Success", "The file was Copied ", 2)
    Else
    MsgBox(262208, "Fail", "The file was NOT Copied ", 2)
    EndIf
    EndFunc ;==>Set_Copy

    [/autoit] [autoit][/autoit] [autoit]

    Func Set_Rename()
    GUICtrlSetData($Status, "Setting Rename File...")
    $RInfo = GUICtrlRead($Edit2)
    If $RInfo = "" Or $RInfo = "Found File list" Or $RInfo = "Searched File list" Then
    GUICtrlSetData($Status, "No File Selected...")
    MsgBox(262208, "Sorry", "No Rename File was Selected. ", 2)
    Return
    EndIf
    GUICtrlSetData($Status, "Prompt for FileName...")
    $Minfo = InputBox("Rename File", "Please Type a New FileName. ", "", "", -1, 150)
    If $Minfo = "" Then
    GUICtrlSetData($Status, "No Name Given...")
    MsgBox(262208, "Sorry", "No File Name was Selected. ", 2)
    Return
    EndIf
    $result = StringInStr($RInfo, "\", 0, -1)
    $NInfo = StringLeft($RInfo, $result) & $Minfo & StringRight($Temp_File, 4)
    GUICtrlSetData($Status, "Checking if File Exists...")
    If FileExists($NInfo) Then
    $iMsgBoxAnswer = MsgBox(262212, "Overwrite Existing File?", "The File " & $NInfo & " was found " & @CRLF & @CRLF & "Over-Write File?")
    If $iMsgBoxAnswer = 7 Then
    Return
    EndIf
    EndIf
    GUICtrlSetData($Status, "Renaming File...")
    $var1 = FileMove($RInfo, $NInfo, 1)
    If $var1 = 1 Then
    FileDelete($RInfo)
    MsgBox(262208, "Success", "The file was Renamed ", 2)
    Else
    MsgBox(262208, "Fail", "The file was NOT Renamed ", 2)
    EndIf
    $ret = _GUICtrlListBox_FindString ($Edit2, $RInfo, 1)
    If ($ret == $LB_ERR) Then
    MsgBox(16, "Error #1", "Unknown error from _GUICtrlListBox_FindString")
    Else
    $ret2 = _GUICtrlListBox_DeleteString ($Edit2, $ret)
    If ($ret2 == $LB_ERR) Then
    MsgBox(16, "Error #2", "Unknown error from _GUICtrlListDeleteItem")
    EndIf
    EndIf
    EndFunc ;==>Set_Rename

    [/autoit] [autoit][/autoit] [autoit]

    Func Set_Delete()
    GUICtrlSetData($Status, "Setting up Delete...")
    $DInfo = GUICtrlRead($Edit2)
    If $DInfo = "" Or $DInfo = "Found File list" Or $DInfo = "Searched File list" Then
    GUICtrlSetData($Status, "No File Selected...")
    MsgBox(262208, "Sorry", "No Delete File was Selected. ", 2)
    Return
    EndIf
    GUICtrlSetData($Status, "Verify that File Exists...")
    If FileExists($DInfo) Then
    $iMsgBoxAnswer = MsgBox(262212, "Confirm - Delete File?", "The File " & $DInfo & " was found " & @CRLF & @CRLF & "Delete File?")
    If $iMsgBoxAnswer = 7 Then
    Return
    EndIf
    EndIf
    GUICtrlSetData($Status, "Deleting File...")
    $var1 = FileDelete($DInfo)
    If $var1 = 1 Then
    MsgBox(262208, "Success", "The file was Deleted ", 2)
    Else
    MsgBox(262208, "Fail", "The file was NOT Deleted ", 2)
    EndIf
    $ret = _GUICtrlListBox_FindString ($Edit2, $DInfo, 1)
    If ($ret == $LB_ERR) Then
    MsgBox(16, "Error #1", "Unknown error from _GUICtrlListBox_FindString")
    Else
    $ret2 = _GUICtrlListBox_DeleteString ($Edit2, $ret)
    If ($ret2 == $LB_ERR) Then
    MsgBox(16, "Error #2", "Unknown error from _GUICtrlListDeleteItem")
    EndIf
    EndIf
    EndFunc ;==>Set_Delete

    [/autoit] [autoit][/autoit] [autoit]

    Func Set_File()
    GUICtrlSetData($Status, "Checking File Type...")
    For $t = 1 To $Temp_Type[0]
    If GUICtrlRead($R_[$t]) = 1 Then
    If $t = $Temp_Type[0] Then
    $Read_Temp = GUICtrlRead($R_Input)
    If $Read_Temp = "" Or StringInStr($Read_Temp, ".") = 0 Then
    GUICtrlSetData($Status, "No File Type Selected...")
    MsgBox(262208, "Sorry", "No File Type Selected. " & @CRLF & "Example .exe or .dll ", 5)
    Return -1
    EndIf
    $Temp_File = "*" & $Read_Temp
    Else
    $Temp_File = "*" & $Temp_Type[$t]
    EndIf
    Return
    EndIf
    Next
    EndFunc ;==>Set_File

    [/autoit] [autoit][/autoit] [autoit]

    Func open_SciTE()
    GUICtrlSetData($Status, "Setting up SciTE...")
    $Temp_Edit = GUICtrlRead($Edit1)
    If $Temp_Edit = "" Or $Temp_Edit = "Found File list" Then
    GUICtrlSetData($Status, "No File Selected for SciTE...")
    MsgBox(262208, "Sorry", "No Files\Folders Selected. ", 2)
    Return
    EndIf
    GUICtrlSetData($Status, "Checking for Au3 File...")
    If StringInStr($Temp_Edit, ".au3") = 0 Then
    $iMsgBoxAnswer = MsgBox(262212, "Verify File Type", "The File " & $Temp_Edit & " is NOT an *au3* Type. " & @CRLF & @CRLF & "Open in SciTE.exe?")
    If $iMsgBoxAnswer = 7 Then
    Return
    EndIf
    EndIf
    GUICtrlSetData($Status, "Check if SciTE is Running...")
    If ProcessExists("SciTE.exe") Then
    MsgBox(262208, "SciTE is Running", "Placing File in Scite.exe ", 2)
    Opt("WinTitleMatchMode", 4)
    $Temp_Text = FileRead($Temp_Edit, FileGetSize($Temp_Edit))
    WinActivate("classname=SciTEWindow")
    WinWaitActive("classname=SciTEWindow")
    ControlSend("classname=SciTEWindow", "", "", "^n")
    Sleep(50)
    ControlSetText("classname=SciTEWindow", "", "Scintilla1", $Temp_Text)
    Opt("WinTitleMatchMode", 1)
    Return
    EndIf
    GUICtrlSetData($Status, "Running SciTE Now...")
    $Temp_Edit = FileGetShortName($Temp_Edit)
    Run(@ComSpec & " /c Start " & $Temp_Edit, "", @SW_HIDE)
    EndFunc ;==>open_SciTE

    [/autoit] [autoit][/autoit] [autoit]

    Func endscript()
    MsgBox(262208, "Thanks", "... Valuater ", 1)
    FileDelete(@TempDir & "\au3.txt")
    EndFunc ;==>endscript

    [/autoit]
  • Hallo zusammen :)

    @ icerose: _FileListToArray klingt interessant. Sehe ich das richtig, das er da eine Art Liste schreibt und diese dann auswertet? So wie es das Skript "Zufallsauswahl" macht? Werde mich auf jeden Fall mal dran versuchen!

    @ Doc: Beispiele zu FindFileFirst und Next... äh.. jaaaaaa... bestimmt werde ich sie auch irgendwann mal verstehen. *hüstel *fg

    @ Xeno: Sach mal... hast Du nix zu tun? [Blockierte Grafik: http://www.autoit.de/wcf/images/smilies/23.gif/bmi_orig_img/23.gif] Ich frag nach 'ner kleinen Hilfe und bekomme das "Full-round-Mega-Class-A-Super-Package". In Geschenkverpackung! [Blockierte Grafik: http://www.autoit.de/wcf/images/smilies/23.gif/bmi_orig_img/23.gif] Nicht, dass ich mich beschweren würde! Im Gegenteil, vielen lieben Dank! :) Aber... "das ist doch nicht normal für 'ne Bank!" *lach

    Auf jeden Fall danke Euch allen für die Hilfe. Ich lass das Thema noch etwas offen, bis ich eine eigene Version erstellt habe. (Oder bis die Woche um ist.) Einverstanden?

    Liebe Grüße,
    Reinhold.

  • Hi Arioch,

    Was soll denn die Aussage?

    Zitat

    @ Doc: Beispiele zu FindFileFirst und Next... äh.. jaaaaaa... bestimmt werde ich sie auch irgendwann mal verstehen. *hüstel *fg

    Also ne bessere Hilfe wie das Beispiel gibt es ja nun nicht. So ein klein bisschen muss man sich schon mal mit Autoit befassen wenn man Programme schreiben möchte, wir sind schließlich ein Supportforum und kein "Nenn mir deine Idee und ich programmiere es" Forum.

    Das mal für deinen weiteren Weg hier.

    MfG
    Der_Doc

  • Hi Doc :)

    Was soll denn die Aussage?

    Ganz einfach, das soll bedeuten, das ich mit dem Beispiel der Hilfe noch nicht allzuviel anzufangen weiß. Ok, ich bekomme eine MessageBox, die mir "No files/directories matched the search pattern" anzeigt. Nett. Wie ich dies in dem von mir angedachten Script verwenden soll ... "verstehe ich noch nicht". Aber das liegt nicht am Schreiber / Übersetzer der Hilfe, sondern mehr an der Trägheit der geistigen Masse meinerseits. Aber das wird schon noch.

    Also ne bessere Hilfe wie das Beispiel gibt es ja nun nicht.

    Stimmt. Was Besseres gibt es nicht. Aber wie gesagt, ich komm' schon noch dahinter.

    So ein klein bisschen muss man sich schon mal mit Autoit befassen wenn man Programme schreiben möchte, wir sind schließlich ein Supportforum und kein "Nenn mir deine Idee und ich programmiere es" Forum.

    Wenn Du mein erstes Posting hier gelesen hast, wird Dir vielleicht aufgefallen sein, dass ich nicht fragte: "Hey, ich hab ne Idee, wer ist so gelangweilt und schreibt mir das Script dazu?" (Als nächstes kommt dann vermutlich "Hey, ich hab keine Idee! Wer hilft mir mal mit einer aus?") Ich fragte explizit danach, ob mein Ansatz für meine Idee taugt oder ob ich da schon auf dem Holzweg bin. (Und ich meine mich zu erinnern, dass ich das Thema noch offen lassen möchte, bis ich eine eigene Variante - nun ja - zusammengestümpert habe.)

    Das Script von Xeno ist für mich daher interessant, das es mir vielleicht helfen kann, meine Idee umzusetzen. In seiner jetzigen Form ist es mir allerdings etwas zu umfangreich. Wenn ich Wissen / Nichtwissen vorgekaut haben möchte, setze ich mich vor den Fernseher! Zum einen Ohr rein, zum anderen raus, weil nichts dazwischen, was bremst.

    Auf den Punkt gebracht: Ich frage nicht nach fertigen Lösungen, das ist witzlos. Ich bitte um Hilfe. Um Ansätze. Aber es ist vermutlich mein eigener Fehler. Da ich hier noch kein Skript gepostet habe, muß zwangsläufig der Eindruck entstehen, dass ich mich "durchfüttern" lassen will. Dem ist nicht so. Meine ersten Gehversuche mit AutoIt sind im besten Fall belanglos. Sie erfüllen ihren Zweck, sicher. Aber ein Meisterwerk sind sie nicht. Aber wenn gewünscht, werde ich sie natürlich posten.

    Bisher sind es zwei Skripte (es schaudert mich, diese Dinger "Skripte" zu nennen), die ich erstellt habe. Einmal eine Art Mehrfachprogrammstart. Da ich einen monatlichen Tätigkeitsnachweis (beruflich) führen muß, bin ich gezwungen, jeden Tag Einträge in eine Exeltabelle zu machen. Dazu gehören auch Streckenberechnungen mit Routenplaner und Rechner. Diese Programme lasse ich jetzt mit AutoIt öffnen (und wieder schließen)

    Das zweite ist ein Tool, mit dem ich CD's (legal gekaufte) in MP3s umwandeln, benennen, ID3-Tag erstellen und (dank der Hilfe hier) auch in den richtigen Ordner verschieben kann. Fast vollautomatisch. Aber auch nichts großartiges. Wie gesagt, wenn Interese, dann Post.

    Ich hoffe, ich konnte Deine Bedenken bezüglich meines weiteren Weges hier ein wenig zerstreuen...

    Liebe Grüße,
    Reinhold.

  • He tief durch artmen.
    Ich wollte dir in keiner Weise durchfüttern vorwerfen. War nur ein bisschen ich nenne es mal angepi**t als ich deine Antwort gelesen habe so vonwegen *hüstel *fg

    Diese Formulierung war besser

    Zitat

    Stimmt. Was Besseres gibt es nicht. Aber wie gesagt, ich komm' schon noch dahinter.


    und hätte ich auch erwartet. Es weis keiner alles und deswegen sind wir hier... um zu helfen. Sorry wenn es für mich leider so aussah, das du eigentlich keine Lust hast dir die Funktion anzuschauen. .... solche Leute hatten wir hier auch schon genügend.
    So und nun Sorry wegen dem schlechten Start Dank mir und lass uns wieder ruhig programmieren und Probleme weltzen. ;)

    MfG
    Der_Doc

  • Hi Doc!

    He tief durch artmen.
    Ich wollte dir in keiner Weise durchfüttern vorwerfen. War nur ein bisschen ich nenne es mal angepi**t als ich deine Antwort gelesen habe so vonwegen *hüstel *fg

    Sollte ja auch kein Vorwurf sein... ich komm mir halt nur unbeholfen vor, das ist alles. (Stell Dir einen Grobmotoriker vor, der Atome (oder Haare) spalten soll. *g) Aber nur mal als Beispiel: Ich möchte die Ausgabe von @MON von zweistellig "09" in einen String umwandeln "September". Ok, ich kenne "@MON", ich kenne "_DateMonthOfYear" aus der include Date.au3, ich kenne Stringsplit, ich hab es auch mal so versucht:


    Spoiler anzeigen

    include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Date.au3>
    Opt("WinTitleMatchMode", 1)


    $mon = @MON
    $lastmon = @MON - 1

    If $mon = "01" Then
    $mon = "Januar"
    EndIf

    If $mon = "02" Then
    $mon = "Februar"
    EndIf

    If $mon = "03" Then
    $mon = "März"
    EndIf

    If $mon = "04" Then
    $mon = "April"
    EndIf

    If $mon = "05" Then
    $mon = "Mai"
    EndIf

    If $mon = "06" Then
    $mon = "Juni"
    EndIf

    If $mon = "07" Then
    $mon = "Juli"
    EndIf

    If $mon = "08" Then
    $mon = "August"
    EndIf

    If $mon = "09" Then
    $mon = "September"
    EndIf

    If $mon = "10" Then
    $mon = "Oktober"
    EndIf

    If $mon = "11" Then
    $mon = "November"
    EndIf

    If $mon = "12" Then
    $mon = "Dezember"
    EndIf

    If NOT FileExists("D:\Eigene Dateien\Reinhold\PZN\" &$mon &".xls") Then
    Run("C:\Programme\Microsoft Office\OFFICE11\EXCEL.EXE")
    WinActivate("Microsoft Excel", "")
    WinWaitActive("Microsoft Excel", "")
    Send("!d")
    Send("f")
    Sleep(5000)
    Send("D:\Eigene Dateien\Reinhold\PZN\" &$lastmon &".xls")
    Sleep(5000)
    Send("{ENTER}")
    Sleep(5000)
    Send("!d")
    Send("u")
    Sleep(5000)
    Send("D:\Eigene Dateien\Reinhold\PZN\" &$mon &".xls")
    Send("{ENTER}")
    Sleep(5000)
    WinClose("Microsoft Excel", "")
    EndIf


    Run("C:\Programme\Microsoft Office\OFFICE11\EXCEL.EXE")
    WinWaitActive("Microsoft Excel - Mappe1")
    Send("^o")
    Send("D:\Eigene Dateien\Reinhold\PZN\" &$mon &".xls")
    Sleep(20000)
    Send("{ENTER}")
    Sleep(2000)

    Run("C:\Programme\klickRoute 2002\kroute.exe")
    WinWaitActive("klickRoute - Der Routenplaner in Ihrem PC")
    Send("!d")
    Send("l")
    Send("D:\Eigene Dateien\Werneuchen rundum.krt")
    Send("{ENTER}")
    Sleep(2000)

    Run("C:\WINDOWS\SYSTEM32\calc.exe")

    If ProcessExists("clipmagic.exe") Then
    WinActivate("ClipMagic", "")
    WinWait("ClipMagic", "", 5)
    Winclose("ClipMagic", "")
    EndIf


    Sleep(1000)

    WinMinimizeAll()


    ;Initialize variables
    Local $DB_Btn, $RO_Btn, $RE_Btn, $msg


    $Form2 = GUICreate("Startsequenz beendet!", 368, 202, 327, 264)
    GUISetIcon("D:\004.ico")

    $GroupBox1 = GUICtrlCreateGroup("", 17, 35, 185, 123)
    $Womit = GUICtrlCreateLabel("Womit", 57, 63, 98, 32)
    GUICtrlSetColor(-1, 0x000000)
    GUICtrlSetFont(-1, 18, 400, 0, "Bumm")
    $beginnen = GUICtrlCreateLabel("beginnen", 35, 107, 141, 32)
    GUICtrlSetColor(-1, 0x000000)
    GUICtrlSetFont(-1, 18, 400, 0, "Bumm")
    GUICtrlCreateGroup("", -99, -99, 1, 1)


    GUISetBkColor(0x800000)


    ;Create an "DB" button
    $DB_Btn = GUICtrlCreateButton("Datenblatt", 239, 19, 120, 25, 0)

    ;Create a "RO" button
    $RO_Btn = GUICtrlCreateButton("Route", 238, 52, 120, 25, 0)

    ;Create a "RE" button
    $RE_Btn = GUICtrlCreateButton("Rechner", 238, 84, 120, 25, 0)

    ;Show window/Make the window visible
    GUISetState(@SW_SHOW)

    WinActivate("Startsequenz beendet!", "")

    ;Loop until:
    ;- user presses Esc
    ;- user presses Alt+F4
    ;- user clicks the close button
    While 1
    ;After every loop check if the user clicked something in the GUI window
    $msg = GUIGetMsg()

    Select

    ;Check if user clicked on the close button
    Case $msg = $GUI_EVENT_CLOSE
    ;Destroy the GUI including the controls
    GUIDelete()
    ;Exit the script
    Exit

    ;Check if user clicked on the "OK" button
    Case $msg = $DB_Btn
    WinActivate("Microsoft Excel - September.xls", "")
    Sleep(1000)
    GUIDelete()
    Exit

    ;Check if user clicked on the "CANCEL" button
    Case $msg = $RO_Btn
    WinActivate("klickRoute 2002", "")
    Sleep(1000)
    GUIDelete()
    Exit

    ;Check if user clicked on the "CANCEL" button
    Case $msg = $RE_Btn
    WinActivate("Rechner", "")
    Sleep(1000)
    GUIDelete()
    Exit


    EndSelect

    WEnd


    (Soll mehrere Programme und ein bestimmtes Excel-Dokument öffnen. Letzteres soll immer das sein, welches so heißt wie der aktuelle Monat. Ist es nicht (noch nicht) vorhanden, soll es automatisch aus dem letzten vorhandenen Dokument erstellt werden. Also: Öffne "Oktober". Ist "Oktober" nicht vorhanden, öffne "September" und speichere es unter "Oktober", öffne nun "Oktober".)

    Aber glaubst Du, ich bekomme es hin? Der Grobmotoriker unter den einarmigen Banditen... That's me! *fg

    Diese Formulierung war besser


    und hätte ich auch erwartet. Es weis keiner alles und deswegen sind wir hier... um zu helfen. Sorry wenn es für mich leider so aussah, das du eigentlich keine Lust hast dir die Funktion anzuschauen. .... solche Leute hatten wir hier auch schon genügend.
    So und nun Sorry wegen dem schlechten Start Dank mir und lass uns wieder ruhig programmieren und Probleme weltzen. ;)

    Kein Problem *lach (Und äh... Probleme gibts hier genug. :D )

    Liebe Grüße,
    Reinhold.

  • Dumm!

    DummDummDumm! :wacko:

    Man sollte nicht nur $mon, sondern auch $lastmon redifinieren! :thumbdown:

    Also nicht nur:

    Spoiler anzeigen

    $mon = @MON
    $lastmon = @MON - 1

    If $mon = "01" Then
    $mon = "Januar"
    ElseIf $mon = "02" Then
    $mon = "Februar"
    ElseIf $mon = "03" Then
    $mon = "März"
    ElseIf $mon = "04" Then
    $mon = "April"
    ElseIf $mon = "05" Then
    $mon = "Mai"
    ElseIf $mon = "06" Then
    $mon = "Juni"
    ElseIf $mon = "07" Then
    $mon = "Juli"
    ElseIf $mon = "08" Then
    $mon = "August"
    ElseIf $mon = "09" Then
    $mon = "September"
    ElseIf $mon = "10" Then
    $mon = "Oktober"
    ElseIf $mon = "11" Then
    $mon = "November"
    ElseIf $mon = "12" Then
    $mon = "Dezember"
    EndIf

    Sondern:

    Spoiler anzeigen

    $mon = @MON
    $lastmon = @MON - 1

    If $mon = "01" Then
    $mon = "Januar"
    ElseIf $mon = "02" Then
    $mon = "Februar"
    ElseIf $mon = "03" Then
    $mon = "März"
    ElseIf $mon = "04" Then
    $mon = "April"
    ElseIf $mon = "05" Then
    $mon = "Mai"
    ElseIf $mon = "06" Then
    $mon = "Juni"
    ElseIf $mon = "07" Then
    $mon = "Juli"
    ElseIf $mon = "08" Then
    $mon = "August"
    ElseIf $mon = "09" Then
    $mon = "September"
    ElseIf $mon = "10" Then
    $mon = "Oktober"
    ElseIf $mon = "11" Then
    $mon = "November"
    ElseIf $mon = "12" Then
    $mon = "Dezember"
    EndIf


    If $lastmon = "01" Then
    $lastmon = "Januar"
    ElseIf $lastmon = "02" Then
    $lastmon = "Februar"
    ElseIf $lastmon = "03" Then
    $lastmon = "März"
    ElseIf $lastmon = "04" Then
    $lastmon = "April"
    ElseIf $lastmon = "05" Then
    $lastmon = "Mai"
    ElseIf $lastmon = "06" Then
    $lastmon = "Juni"
    ElseIf $lastmon = "07" Then
    $lastmon = "Juli"
    ElseIf $lastmon = "08" Then
    $lastmon = "August"
    ElseIf $lastmon = "09" Then
    $lastmon = "September"
    ElseIf $lastmon = "10" Then
    $lastmon = "Oktober"
    ElseIf $lastmon = "11" Then
    $lastmon = "November"
    ElseIf $lastmon = "12" Then
    $lastmon = "Dezember"
    EndIf

    Dann wird auch "08" zu "September". Jetzt muß ich nur noch herausfinden, wie ich mit AutoIt Dateien umbenenne. "FileRename" scheint es ja nicht zu geben, oder? Eventuell mit SplitString oder StringLeft?

    Grüße,
    Reinhold.

    • Offizieller Beitrag

    @Arioch: Dein $lastmon funktioniert nicht, wenn der aktuelle Monat "Januar" ist!

    Nimm lieber diese kürzere Variante für Deine Monatsnamen:

    [autoit]


    Global $aMonth[13] = [12, 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
    Global $ThisMonth = $aMonth[@MON]
    Global $LastMonth = $aMonth[(@MON - 1) + (@MON - 1 = 0) * 12]
    MsgBox(0, 0, $ThisMonth & @CRLF & $LastMonth)

    [/autoit]
  • @Arioch: Dein $lastmon funktioniert nicht, wenn der aktuelle Monat "Januar" ist! Nimm lieber diese kürzere Variante für Deine Monatsnamen[/autoit]

    Hm... der Unterschied zwischen Anfänger und Fortgeschrittenem. Meine Routine funktioniert (mit Abstrichen (siehe Januar), Deine ist obendrein noch elegant! :thumbup: Danke! :)

    Liebe Grüße,
    Reinhold.