1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. autoBert

Beiträge von autoBert

  • 2 Verzeichnisse vergleichen und ein Array mit zeitlichen Unterschieden retournieren

    • autoBert
    • 7. November 2012 um 15:58

    Hallo Merlin,

    ich habe mich mal bei Oscar bedient und daraus meinen Lösungsvorschlag entwickelt:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Date.au3>

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

    $aChecked = _Check('c:\test1', 'c:\test2', 5)
    _ArrayDisplay($aChecked)

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

    Func _Check($sOrdner1, $sOrdner2, $iDays)
    Local $aReturn1 = _RecursiveFileListToArray($sOrdner1, '', 1, 1, @CRLF, $sOrdner1) ; Alle Dateien im ausgewählten Ordner und Unterordnern)
    Local $aReturn2 = _RecursiveFileListToArray($sOrdner2, '', 1, 1, @CRLF, $sOrdner2) ; Alle Dateien im ausgewählten Ordner und Unterordnern)
    Local $aResult[$aReturn1[0] + $aReturn2[0]][4]
    Local $iNew = 1
    For $i = 1 To $aReturn1[0]
    $iPos = _ArraySearch($aReturn2, $aReturn1[$i])
    If $iPos > -1 Then
    ;datei existiert auch um 2. Verzeichnis
    $sDate1 = StringRegExpReplace(FileGetTime($sOrdner1 & $aReturn1[$i], 0, 1), '(\d{4})(\d{2})(\d{2})(.*)', '$1/$2/$3')
    $sDate2 = StringRegExpReplace(FileGetTime($sOrdner2 & $aReturn2[$iPos], 0, 1), '(\d{4})(\d{2})(\d{2})(.*)', '$1/$2/$3')
    $iDiffDays = _DateDiff('D', $sDate1, $sDate2)
    ;ConsoleWrite($aReturn1[$i] & " " & $sDate1 & " " & $sDate2 & " " & $iDiffDays & @CRLF)
    If $iDiffDays > $iDays Or ($iDiffDays * - 1) > $iDays Then
    $aResult[$iNew][0] = $aReturn1[$i]
    $aResult[$iNew][1] = $sDate1
    $aResult[$iNew][2] = $sDate2
    $aResult[$iNew][3] = $iDiffDays
    $iNew += 1
    EndIf
    _ArrayDelete($aReturn2, $iPos) ;damit in $aReturn2 nur Dateien übrigbleiben die nicht i $aReturn1 sind
    $aReturn2[0] -= 1
    Else
    $aResult[$iNew][0] = $aReturn1[$i]
    $aResult[$iNew][2] = ''
    $aResult[$iNew][3] = "<-1>" ;Kenzeichnung dass Datei nur in 1
    $iNew += 1
    EndIf
    Next
    _ArrayDisplay($aResult)
    For $i = 1 To $aReturn2[0]
    $aResult[$iNew][0] = $aReturn2[$i]
    $sDate2 = StringRegExpReplace(FileGetTime($sOrdner2 & $aReturn2[$i], 0, 1), '(\d{4})(\d{2})(\d{2})(.*)', '$1/$2/$3')
    $aResult[$iNew][1] = ''
    $aResult[$iNew][2] = $sDate2
    $aResult[$iNew][3] = "<-2>" ;Kenzeichnung dass Datei nur in 2
    $iNew += 1
    Next
    $aResult[0][0] = $iNew - 1
    ReDim $aResult[$iNew][4]
    $aResult[0][1] = $sOrdner1
    $aResult[0][2] = $sOrdner2
    $aResult[0][3] = "Differenz"
    Return $aResult
    EndFunc ;==>_Check

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

    ;===============================================================================
    ; Function Name: _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    ; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
    ; einem RegExp-Pattern entsprechen
    ; Parameter(s): $sPath = Startverzeichnis
    ; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
    ; $iFlag = Auswahl
    ; 0 = Dateien & Verzeichnisse
    ; 1 = nur Dateien
    ; 2 = nur Verzeichnisse
    ; $iFormat = Rückgabeformat
    ; 0 = String
    ; 1 = Array mit [0] = Anzahl
    ; 2 = Nullbasiertes Array
    ; $sDelim = Trennzeichen für die String-Rückgabe
    ; Requirement(s): AutoIt 3.3.0.0
    ; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
    ; Author(s): Oscar (http://www.autoit.de)
    ; Anregungen von: bernd670 (http://www.autoit.de)
    ;modified: autoBert um den ursprünglich übergebenen Ordner wegzulassen
    ;===============================================================================
    Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF, $sExlude = '')
    Local $hSearch, $sFile, $sReturn = ''
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
    If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
    $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0, $sDelim, $sExlude)
    ContinueLoop
    EndIf
    If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
    WEnd
    FileClose($hSearch)
    $sReturn = StringReplace($sReturn, $sExlude, "")
    If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
    Return $sReturn
    EndFunc ;==>_RecursiveFileListToArray

    [/autoit]

    edit: Skript abgeändert so dass es jetzt egal ist in welchem der beiden Ordner sich die neuere Version befindet (Kennzeichnung durch positive der negatve Anzahl der Tage).

    Da dadurch Fehlinterpretationen vorkommen konnten die Kennzeichnung für fehlende Dateien geändert: "<-1>" Datei existiert nur in Ordner 1, "<-2>" Datei existiert nur in Ordner 2.
    Ausserdem werden die ermittelten Datumsangaben jetzt im Ergebnisarray gespechert.

    mfg autoBert

  • Problem mit Autoit und _eventlog_Report

    • autoBert
    • 6. November 2012 um 13:19

    Hallo

    dieses aus der Hilfe zusammengestückelte Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <EventLog.au3>
    #RequireAdmin
    Global $iMemo

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

    _Main()

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

    Func _Main()
    Local $hEventLog, $aData[4]=[3, 1, 2, 3], $hGUI

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

    ; Create GUI
    $hGUI = GUICreate("EventLog", 400, 300)
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 300, 0)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()

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

    $hEventLog = _EventLog__Open ("", "Application")
    MemoWrite("Log full ........: " & _EventLog__Full ($hEventLog))
    MemoWrite("Log record count : " & _EventLog__Count ($hEventLog))
    MemoWrite("Log oldest record: " & _EventLog__Oldest ($hEventLog))
    _EventLog__Report($hEventLog, 4, 0, 2, "Administrator", "Von AutoIt3 generiertes Ereignis", $aData)
    $aEvent = _EventLog__Read($hEventLog, True, False) ; liest das letzt Event
    ;~ $hEventLog = _EventLog__Open("", "System"); System-Log
    ;~ $aEvent = _EventLog__Read($hEventLog)
    ;~ $aEvent = _EventLog__Read($hEventLog, True, False) ; Nächsten Eintrag lesen
    MemoWrite("Ergebnis .........: " & $aEvent[ 0])
    MemoWrite("Datensatznummer ..: " & $aEvent[ 1])
    MemoWrite("Übermittelt ......: " & $aEvent[ 2] & " " & $aEvent[ 3])
    MemoWrite("Erstellt .........: " & $aEvent[ 4] & " " & $aEvent[ 5])
    MemoWrite("Ereignis-ID ......: " & $aEvent[ 6])
    MemoWrite("Typ ..............: " & $aEvent[ 8])
    MemoWrite("Kategorie ........: " & $aEvent[ 9])
    MemoWrite("Quelle ...........: " & $aEvent[10])
    MemoWrite("Computer .........: " & $aEvent[11])
    MemoWrite("Benutzer .........: " & $aEvent[12])
    MemoWrite(@CRLF & "Beschreibung: " & @CRLF & @CRLF & $aEvent[13])
    _EventLog__Close ($hEventLog)

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    EndFunc ;==>_Main

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

    ; Write a line to the memo control
    Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
    EndFunc ;==>MemoWrite

    [/autoit]

    funktioniert bei mir unter XP SP3 (AutoIt 3.6.6.1) einwndfrei. Bei anderen BS beötigst du u.U. #RequireAdmin am Anfang.

    mfg autoBert

  • Hotkey

    • autoBert
    • 6. November 2012 um 01:25

    Hallo TL1983,

    hier noch eine ähnliche Lösung:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    HotKeySet('{Enter}', '_Enter')

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

    $hGUI = GUICreate("Meine GUI die Dateien akzeptiert", 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45, -1, 0x00000018); WS_EX_ACCEPTFILES
    $Edit1 = GUICtrlCreateInput("", 10, 5, 300, 20)
    $Edit2 = GUICtrlCreateInput("", 10, 30, 300, 20) ; Akzeptiert kein Drag&Drop von Dateien
    GUICtrlCreateInput("", 10, 55, 300, 20) ; Akzeptiert kein Drag&Drop von Dateien
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _Enter()
    HotKeySet('{Enter}')
    If WinActive($hGUI) Then
    $sClassName = ControlGetFocus($hGUI)
    ConsoleWrite('! Fokus liegt im Fenster bei ' & $sClassName & @CRLF)
    Switch $sClassName
    Case "Edit1", "Edit2"
    ConsoleWrite("an dieser Stelle die gewünschten Funktionen ausführen" & @CRLF & @CRLF)
    Case Else
    ConsoleWrite("falsches Control also keine Funktionen ausführen" & @CRLF & @CRLF)
    Send('{Enter}')
    EndSwitch
    Else
    ConsoleWrite('! Fokus liegt NICHT im Fenster' & @CRLF & @CRLF)
    Send('{Enter}') ;andere nwebdung also normales Enter
    EndIf
    HotKeySet('{Enter}', '_Enter')
    EndFunc ;==>_Enter

    [/autoit]

    mfg autoBert

  • ShellExecute: Parameter wie z.B. "-windowed"

    • autoBert
    • 5. November 2012 um 18:35
    Zitat von mchope57

    Das Programm unterstützt den Parameter, da bin ich mir ganz sicher..


    Du hast also C:\Program.exe -windowed in der Eingabekonsole eingegeben und das gewünschte Resultat erzielt? Dann hast du anscheinend im Skript einen Tippfehler, denn wenn es dort klappt klappt es auch mit shellexecute und run.
    Ein benennen des Programmes wäre auch hlfreich

    mfg autoBert

  • ListView - scrollen per Touch

    • autoBert
    • 5. November 2012 um 14:30

    Hallo sc4ry,

    für das Umsetzen des Scrollens ist doch das BS zuständig deine Anwenung sollte also auch so laufen.

    mfg autoBert

  • Auslesen welcher Tab aktiv ist

    • autoBert
    • 5. November 2012 um 03:06
    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $tab, $tab0, $tab0OK, $tab0input
    Local $tab1, $tab1combo, $tab1OK
    Local $tab2, $tab2OK, $witchTab, $msg

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

    GUICreate("My GUI Tab") ; will create a dialog box that when displayed is centered

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

    GUISetBkColor(0x00E0FFFF)
    GUISetFont(9, 300)

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

    $tab = GUICtrlCreateTab(10, 10, 200, 100)

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

    $tab0 = GUICtrlCreateTabItem("tab0")
    GUICtrlCreateLabel("label0", 30, 80, 50, 20)
    $tab0OK = GUICtrlCreateButton("OK0", 20, 50, 50, 20)
    $tab0input = GUICtrlCreateInput("default", 80, 50, 70, 20)

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

    $tab1 = GUICtrlCreateTabItem("tab----1")
    GUICtrlCreateLabel("label1", 30, 80, 50, 20)
    $tab1combo = GUICtrlCreateCombo("", 20, 50, 60, 120)
    GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo", "Jon") ; default Jon
    $tab1OK = GUICtrlCreateButton("OK1", 80, 50, 50, 20)

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

    $tab2 = GUICtrlCreateTabItem("tab2")
    GUICtrlSetState(-1, $GUI_SHOW) ; will be display first
    GUICtrlCreateLabel("label2", 30, 80, 50, 20)
    $tab2OK = GUICtrlCreateButton("OK2", 140, 50, 50)

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

    GUICtrlCreateTabItem("") ; end tabitem definition

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

    GUICtrlCreateLabel("label3", 20, 130, 50, 20)
    $witchTab = GUICtrlCreateButton("welcher Tb ist aktiv?",10,350)
    GUISetState()

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

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

    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $tab
    MsgBox(0,"aktiver Tab",GUICtrlRead($tab))
    Case $witchTab
    MsgBox(0,"aktiver Tab",GUICtrlRead($tab))
    EndSwitch
    WEnd
    EndFunc

    [/autoit]

    ;==>Example

    ausserdem gint es noch:

    Zitat

    _GUICtrlTab_GetCurSel -------------------

    Ermittelt den aktuell markierten Tab

    zu beachten ist, dass die Zählung beu 0 anfängt.

  • ShellExecute: Parameter wie z.B. "-windowed"

    • autoBert
    • 5. November 2012 um 02:37
    Zitat von mchope57

    Der Parameter soll einfach nur mitgegeben werden

    Zitat von mchope57

    Aber wie bekomm ich das jetzt richtig hin?


    Unterstützt den "C:\Program.exe" diesen Parameter? Sprich: Zeigt die Eingabe von: >C:\Program.exe windowed< in der Eingabekosle den gewünschtem Erflog? Nein; dann bitte Problem genuer beschreiben!

    mfg autoBert

  • UDF für E-Mail Benachrichtigung

    • autoBert
    • 4. November 2012 um 15:11

    Hallo mchope57,

    mit der _pop.au3 kannst du prüfen ob EMails auf dem Pop-Server sind. Um zu prüfen ob es sich um neue handelt müsstest du allerdings diese herunterladen und dann jedesmal vergleichen ob sie schon lokal sind. Den Einsatz der _pop.au3 zeigt Oscar in Oscars POP-Show.

    mfg autoBert

  • mp3 Auswahl

    • autoBert
    • 3. November 2012 um 15:15
    Zitat von Ilse

    Wie kann ich z.B. die Listview selbst füllen, also erweitern?
    Also so:

    1. ich öffne den ersten Ordner und lese files ein.
    2. dann öffne ich einen anderen Ordner und hänge Files an...

    So:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <Sound.au3>
    #include <Array.au3>

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

    If @AutoItVersion < '3.3.0.0' Then Exit MsgBox(16, 'Fehler', 'Funktioniert erst ab AutoIt-Version 3.3.0.0')

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

    Global $htoPlay, $iStart, $aReturn[1], $Musikordner

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

    $iWidth = @DesktopWidth
    $iHeight = @DesktopHeight - 60
    ConsoleWrite($iWidth & "/" & $iHeight)
    $hGui = GUICreate("Form1", $iWidth, $iHeight, 0, 0)
    $idMP3s = GUICtrlCreateListView(" |Pfad", 5, 5, $iWidth - 10, $iHeight - 50, _
    BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT, $LVS_SINGLESEL), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES)) ;$LVS_SHOWSELALWAYS
    ; wichtig ist der Stil $LVS_Report und der eweiterte Stil $LVS_EX_Checkboxes
    $idNext = GUICtrlCreateButton("&Nächstes", 5, $iHeight - 30, 70)
    $idPrev = GUICtrlCreateButton("&Zurück", 100, $iHeight - 30, 70)
    $idopen = GUICtrlCreateButton("&Liste", 200, $iHeight - 30, 70)
    $idPauseResume = GUICtrlCreateButton("&Pause", $iWidth / 2 - 75, $iHeight - 30, 70)
    $idCopy = GUICtrlCreateButton("&Kopieren", $iWidth / 2 + 5, $iHeight - 30, 70)
    $idMarkIt = GUICtrlCreateButton("&Markieren", $iWidth - 75, $iHeight - 30, 70)
    _AddMP3s()
    _GUICtrlListView_SetColumnWidth($idMP3s,1,$iWidth-50)
    GUISetState()

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

    $iAktuell = 0
    _PlayIt()

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

    While 1
    _EventHandler()
    WEnd

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

    Func _EventHandler()
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idNext, $idMarkIt
    If $msg = $idMarkIt And $iAktuell > -1 Then _GUICtrlListView_SetItemChecked($idMP3s, $iAktuell)
    $iAktuell += 1
    If $iAktuell > _GUICtrlListView_GetItemCount($idMP3s)-1 Then $iAktuell = 0
    _PlayIt()

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

    Case $idPrev
    If $msg = $idMarkIt Then _GUICtrlListView_SetItemChecked($idMP3s, $iAktuell - 1)
    $iAktuell -= 1
    If $iAktuell <0 Then $iAktuell = _GUICtrlListView_GetItemCount($idMP3s)-1
    _PlayIt()

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

    Case $idopen
    _AddMP3s()

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

    Case $idPauseResume
    If GUICtrlRead($idPauseResume) = "&Pause" Then
    GUICtrlSetData($idPauseResume, "&Weiter")
    If IsArray($htoPlay) Then _SoundPause($htoPlay)
    While GUICtrlRead($idPauseResume) <> "&Pause"
    _MySleep(50)
    WEnd
    If IsArray($htoPlay) Then _SoundResume($htoPlay)
    Else
    GUICtrlSetData($idPauseResume, "&Pause")
    EndIf
    Case $idCopy
    $Speicherordner = FileSelectFolder("ausgewählte Musik speichern in ", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", 1)
    For $i = 0 To _GUICtrlListView_GetItemCount($idMP3s) - 1
    ;Schleifenbeginn da das erste Item den Index 0 hat von 0 bis Anzahl -1

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

    If _GUICtrlListView_GetItemChecked($idMP3s, $i) Then ; wenn geChecked (angehakt) dann
    ;_GUICtrlListView_GetItemSelected ;wenn markiert
    $aItem = _GUICtrlListView_GetItemTextArray($idMP3s, $i)
    ;Msgbox(4091,"",)
    ;Inhalt aller Spalten dieser Zeile dem Array $aItem zuweisen
    ;FileCopy($Musikordner & "\" & $Array[$i],$Speicherordner & "\" & $Array[$i])
    ;$aItem[0] enthält die Anzahl der Spalten
    ;$aItem[1] leer nur CheckBox
    ;$aItem[2] Qiellpfad der MP3
    ConsoleWrite($aItem[2] & @CRLF)
    FileCopy($aItem[2], $Speicherordner)
    ; Automatisch an die Stelle hinscrollen
    _GUICtrlListView_EnsureVisible($idMP3s, $i)
    Sleep(Random(50, 250, 1)) ;löschen und kopier Befehl einfügen
    EndIf
    Next

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

    EndSwitch
    EndFunc ;==>_EventHandler

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

    Func _AddMP3s()
    $Musikordner = FileSelectFolder("Musik", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")

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

    $timer = TimerInit()
    $aReturn = _RecursiveFileListToArray($Musikordner, '\.mp3\z', 1) ; Alle Dateien mit der Erweiterung ".mp3" (im ausgewählten Ordner und Unterordnern)
    ConsoleWrite(@error & @CRLF)
    ConsoleWrite($aReturn[0] & @TAB & Round(TimerDiff($timer) / 1000, 3) & ' sek.' & @CRLF)
    ;_ArrayDisplay($aReturn, 'Alle Dateien mit der Erweiterung ".,mp3"')
    For $i = 1 To $aReturn[0]
    GUICtrlCreateListViewItem("|" & $aReturn[$i], $idMP3s)
    ;Achtung 1. Spalte hat keinen Inhalt (nur CheckBox)
    Next
    EndFunc ;==>_AddMP3s

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

    Func _PlayIt()
    Local $aItem = _GUICtrlListView_GetItemTextArray($idMP3s,$iAktuell)
    ConsoleWrite($aItem[2])
    If IsArray($htoPlay) Then _SoundStop($htoPlay)
    $htoPlay = _SoundOpen($aItem[2])
    $iStart = TimerInit()
    _GUICtrlListView_EnsureVisible($idMP3s, $iAktuell)
    _GUICtrlListView_SetItemSelected($idMP3s, $iAktuell)
    ControlFocus($hGui,"",$idMP3s)
    _SoundPlay($htoPlay)
    AdlibRegister("_CheckTime")
    EndFunc ;==>_PlayIt

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

    Func _CheckTime()
    Do
    ;ConsoleWrite(Round(TimerDiff($iStart), 3) & @CRLF)
    _EventHandler()
    Until TimerDiff($iStart) >= 12000
    AdlibUnRegister()
    $iAktuell += 1
    If $iAktuell <= _GUICtrlListView_GetItemCount($idMP3s)-1 Then _PlayIt()
    EndFunc ;==>_CheckTime

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

    Func _MySleep($iMSec)
    Local $iStart = TimerInit()
    Do
    _EventHandler()
    Until TimerDiff($iStart) >= $iMSec
    EndFunc ;==>_MySleep

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

    ;===============================================================================
    ; Function Name: _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    ; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
    ; einem RegExp-Pattern entsprechen
    ; Parameter(s): $sPath = Startverzeichnis
    ; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
    ; $iFlag = Auswahl
    ; 0 = Dateien & Verzeichnisse
    ; 1 = nur Dateien
    ; 2 = nur Verzeichnisse
    ; $iFormat = Rückgabeformat
    ; 0 = String
    ; 1 = Array mit [0] = Anzahl
    ; 2 = Nullbasiertes Array
    ; $sDelim = Trennzeichen für die String-Rückgabe
    ; Requirement(s): AutoIt 3.3.0.0
    ; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
    ; Author(s): Oscar (http://www.autoit.de)
    ; Anregungen von: bernd670 (http://www.autoit.de)
    ;===============================================================================
    Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    Local $hSearch, $sFile, $sReturn = ''
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
    If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
    $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
    ContinueLoop
    EndIf
    If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
    WEnd
    FileClose($hSearch)
    If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
    Return $sReturn
    EndFunc ;==>_RecursiveFileListToArray

    [/autoit]

    Dadurch bedingt hat sich vieles am Skript geändert, da jetzt ja nicht mehr gewährlestet ist dass das Array und die LV syncron sind.

    mfg autoBert

  • mp3 Auswahl

    • autoBert
    • 3. November 2012 um 13:19

    Hallo Ilse,

    tausche die Func _PlayIt gegen diese:

    [autoit]

    Func _PlayIt()
    If IsArray($htoPlay) Then _SoundStop($htoPlay)
    $htoPlay = _SoundOpen($aReturn[$iAktuell])
    $iStart = TimerInit()
    _GUICtrlListView_EnsureVisible($idMP3s, $iAktuell - 1)
    _GUICtrlListView_SetItemSelected($idMP3s, $iAktuell-1)
    ControlFocus($hGui,"",$idMP3s) ;<========
    _SoundPlay($htoPlay)
    AdlibRegister("_CheckTime")
    EndFunc ;==>_PlayIt

    [/autoit]

    durch die eimgefügte Zeile erhält die LV den Focus und man kann besser erkennen was gerade gespielt wird.

    mfg autoBert

  • add

    • autoBert
    • 3. November 2012 um 01:11

    Do you search for Doubleclic on Items?

    [autoit]

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

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

    #Region GUI1
    $GUI1 = GUICreate("CNC list", 614, 390)
    $btnGO = GUICtrlCreateButton("&GO", 10, 330, 75, 25)

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

    GUICtrlCreateButton("M list", 85, 330, 75, 25)
    GUICtrlSetFont(-1, 10, 700, -1, "MS Sans Serif")

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

    ;$List_1 = GUICtrlCreateListView(" ", 10, 10, 150, 315) ;you can specify ColHeader Text insted of " "
    $List_1 = GUICtrlCreateListView("test ", 10, 10, 150, 315,$LVS_NOCOLUMNHEADER) ;without ColHeader
    GUICtrlCreateListViewItem("G1", $List_1)
    GUICtrlCreateListViewItem("Program Start and End", $List_1)
    _GUICtrlListView_SetColumnWidth($List_1,0,146)

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

    $tbChosen = GUICtrlCreateEdit("", 175, 10, 420, 315)

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

    GUISetState(@SW_SHOW, $GUI1)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<========== Nessages for Listview

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

    #EndRegion GUI1

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("", 428, 205, 339, 527)
    $Group1 = GUICtrlCreateGroup("", 0, 16, 417, 145)
    $Label1 = GUICtrlCreateLabel("Program number [1000-6000 ]", 144, 40, 144, 17)
    $Input1 = GUICtrlCreateInput("", 16, 40, 121, 21)
    $Input2 = GUICtrlCreateInput("", 16, 72, 121, 21)
    $Input3 = GUICtrlCreateInput("", 16, 104, 121, 21)
    $Label2 = GUICtrlCreateLabel("Program description", 144, 80, 97, 17)
    $Label3 = GUICtrlCreateLabel("Max spindle speed", 144, 112, 92, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("OK", 336, 176, 75, 25)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $aMsg = GUIGetMsg(1)

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

    Switch $aMsg[1]
    Case $GUI1
    Switch $aMsg[0]
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnGO
    $aItem = _GUICtrlListView_GetItemTextArray($List_1)
    _go($aItem[1])
    EndSwitch
    Case $Form1
    Switch $aMsg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $Form1)
    Case $Button1
    GUICtrlSetData($tbChosen, GUICtrlRead($Input1) & @CRLF & _
    GUICtrlRead($Input2) & @CRLF & _
    GUICtrlRead($Input3) & @CRLF, 1)

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

    GUISetState(@SW_HIDE, $Form1)
    EndSwitch
    EndSwitch
    WEnd

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

    Func _go($sListRead)
    WinSetTitle($Form1, "", "Insert: " & $sListRead)
    GUICtrlSetData($Group1, "Parameters for '" & $sListRead & "'")
    GUISetState(@SW_SHOW, $Form1)
    EndFunc ;==>_go

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

    Func WM_NOTIFY($HWND, $MSGID, $WPARAM, $LPARAM)
    Local $TAGNMHDR, $CODE
    $TAGNMHDR = DllStructCreate("INT;INT;INT", $LPARAM)
    If @error Then Return 0
    $CODE = DllStructGetData($TAGNMHDR, 3)
    If $WPARAM = $List_1 Then
    ;CONSOLEWRITE($CODE & @CRLF)
    Switch $CODE
    Case $NM_DBLCLK ;DoppeöKLICK
    $aItem = _GUICtrlListView_GetItemTextArray($List_1)
    ;MsgBox(0, "DoubleClick", $aItem[1])
    _go($aItem[1])
    #cs
    Case $NM_RCLICK ;RECHTSKLICK
    MsgBox(0, "","RightClick")
    #ce
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    i have changed your Listbox to a Listview, i don't work with Listboxes

    mfg autoBert

  • mp3 Auswahl

    • autoBert
    • 2. November 2012 um 21:51

    Hallo Ilse,

    hier das Grundgerüst meines Lösungsvrschlags:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <Sound.au3>
    #include <Array.au3>

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

    If @AutoItVersion < '3.3.0.0' Then Exit MsgBox(16, 'Fehler', 'Funktioniert erst ab AutoIt-Version 3.3.0.0')

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

    Global $htoPlay, $iStart

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

    $Musikordner = FileSelectFolder("Musik", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")

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

    $timer = TimerInit()
    $aReturn = _RecursiveFileListToArray($Musikordner, '\.mp3\z', 1) ; Alle Dateien mit der Erweiterung ".mp3" (im ausgewählten Ordner und Unterordnern)
    ConsoleWrite(@error & @CRLF)
    ConsoleWrite($aReturn[0] & @TAB & Round(TimerDiff($timer) / 1000, 3) & ' sek.' & @CRLF)
    ;_ArrayDisplay($aReturn, 'Alle Dateien mit der Erweiterung ".,mp3"')

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

    $iWidth = @DesktopWidth
    $iHeight = @DesktopHeight - 60
    ConsoleWrite($iWidth & "/" & $iHeight)
    $hGui = GUICreate("Form1", $iWidth, $iHeight, 0, 0)
    $idMP3s = GUICtrlCreateListView(" |Pfad", 5, 5, $iWidth - 10, $iHeight - 50, _
    BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT, $LVS_SINGLESEL), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES)) ;$LVS_SHOWSELALWAYS
    ; wichtig ist der Stil $LVS_Report und der eweiterte Stil $LVS_EX_Checkboxes
    $idNext = GUICtrlCreateButton("&Nächstes", 5, $iHeight - 30, 70)
    $idPauseResume = GUICtrlCreateButton("&Pause", $iWidth / 2 - 75, $iHeight - 30, 70)
    $idCopy = GUICtrlCreateButton("&Kopieren", $iWidth / 2 + 5, $iHeight - 30, 70)
    $idMarkIt = GUICtrlCreateButton("&Markieren", $iWidth - 75, $iHeight - 30, 70)
    For $i = 1 To $aReturn[0]
    GUICtrlCreateListViewItem("|" & $aReturn[$i], $idMP3s)
    ;Achtung 1. Spalte hat keinen Inhalt (nur CheckBox)
    Next
    GUISetState()

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

    $iAktuell = 1
    _PlayIt()

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

    While 1
    _EventHandler()
    WEnd

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

    Func _EventHandler()
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idNext, $idMarkIt
    if $msg = $idMarkIt Then _GUICtrlListView_SetItemChecked($idMP3s, $iAktuell-1)
    $iAktuell += 1
    If $iAktuell <= $aReturn[0] Then _PlayIt()
    Case $idPauseResume
    If GUICtrlRead($idPauseResume) = "&Pause" Then
    GUICtrlSetData($idPauseResume, "&Weiter")
    If IsArray($htoPlay) Then _SoundPause($htoPlay)
    While GUICtrlRead($idPauseResume) <> "&Pause"
    _MySleep(50)
    WEnd
    If IsArray($htoPlay) Then _SoundResume($htoPlay)
    Else
    GUICtrlSetData($idPauseResume, "&Pause")
    EndIf
    Case $idCopy
    $Speicherordner = FileSelectFolder("ausgewählte Musik speichern in ", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", 1)
    For $i = 0 To _GUICtrlListView_GetItemCount($idMP3s) - 1
    ;Schleifenbeginn da das erste Item den Index 0 hat von 0 bis Anzahl -1

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

    If _GUICtrlListView_GetItemChecked($idMP3s, $i) Then ; wenn geChecked (angehakt) dann
    ;_GUICtrlListView_GetItemSelected ;wenn markiert
    $aItemText = _GUICtrlListView_GetItemTextArray($idMP3s, $i)
    ;Inhalt aller Spalten dieser Zeile dem Array $aItemText zuweisen
    ;$aItemText[0] enthält die Anzahl der Spalten
    ;$aItemText[1]
    ;$aItemText[2] Qiellpfad der MP3
    ConsoleWrite($aItemText[2] & @CRLF)
    ; Automatisch an die Stelle hinscrollen
    _GUICtrlListView_EnsureVisible($idMP3s, $i)
    Sleep(Random(50, 250, 1)) ;löschen und kopier Befehl einfügen
    EndIf
    Next

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

    EndSwitch
    EndFunc ;==>_EventHandler

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

    Func _PlayIt()
    If IsArray($htoPlay) Then _SoundStop($htoPlay)
    $htoPlay = _SoundOpen($aReturn[$iAktuell])
    $iStart = TimerInit()
    _GUICtrlListView_EnsureVisible($idMP3s, $iAktuell - 1)
    ;_GUICtrlListView_SetItemFocused($idMP3s, $iAktuell - 1)
    _GUICtrlListView_SetItemSelected($idMP3s, $iAktuell-1)
    _SoundPlay($htoPlay)
    AdlibRegister("_CheckTime")
    EndFunc ;==>_PlayIt

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

    Func _CheckTime()
    Do
    ConsoleWrite(Round(TimerDiff($iStart), 3) & @CRLF)
    _EventHandler()
    Until TimerDiff($iStart) >= 15000
    AdlibUnRegister()
    $iAktuell += 1
    If $iAktuell <= $aReturn[0] Then _PlayIt()
    EndFunc ;==>_CheckTime

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

    Func _MySleep($iMSec)
    Local $iStart = TimerInit()
    Do
    _EventHandler()
    Until TimerDiff($iStart) >= $iMSec
    EndFunc ;==>_MySleep

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

    ;===============================================================================
    ; Function Name: _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    ; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
    ; einem RegExp-Pattern entsprechen
    ; Parameter(s): $sPath = Startverzeichnis
    ; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
    ; $iFlag = Auswahl
    ; 0 = Dateien & Verzeichnisse
    ; 1 = nur Dateien
    ; 2 = nur Verzeichnisse
    ; $iFormat = Rückgabeformat
    ; 0 = String
    ; 1 = Array mit [0] = Anzahl
    ; 2 = Nullbasiertes Array
    ; $sDelim = Trennzeichen für die String-Rückgabe
    ; Requirement(s): AutoIt 3.3.0.0
    ; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
    ; Author(s): Oscar (http://www.autoit.de)
    ; Anregungen von: bernd670 (http://www.autoit.de)
    ;===============================================================================
    Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    Local $hSearch, $sFile, $sReturn = ''
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
    If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
    $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
    ContinueLoop
    EndIf
    If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
    WEnd
    FileClose($hSearch)
    If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
    Return $sReturn
    EndFunc ;==>_RecursiveFileListToArray

    [/autoit]

    eignetlich musst du nur noch die Kopierfunktion einfügen. Da ich nur wenige M3's habe konnte ich nicht ausgiebig testen. Ich fürchte dass bei grossen Musikarchiven ein Stackfehler kommt.

    mfg autoBert

  • mp3 Auswahl

    • autoBert
    • 2. November 2012 um 19:54

    Hallo Ilse,

    da wie du schreibst auch Unterordner mit durchsucht werden sollen benötogst du eine rekursive Suchfunktio z.B.: _RecursiveFileListToArray von Oscar .

    Die gefundenen MP3's würde ich in einer Listview mit Checkboxen anzeigen lassen und beim Testhören bei Gefallen anhacken. Danach auf Buttonklick alle angehackten kopieren.

    mfg autoBert

  • FileOpenDialog maximiert darstellen

    • autoBert
    • 2. November 2012 um 14:34

    @Xeno: leider läuft das Skrpt unter 3.6.6.1 nicht mehr. Die Fehlermeldungen ala

    Code
    >14:29:27 Starting AutoIt3Wrapper v.2.0.0.1    Environment(Language:0407  Keyboard:00000407  OS:WIN_XP/Service Pack 3  CPU:X86 OS:X86)
    >Running AU3Check (1.54.19.0)  from:D:\Programme\AutoIt3
    D:\Programme\AutoIt3\Include\FileDialogsEx.au3(12,43) : ERROR: $OFN_ALLOWMULTISELECT previously declared as a 'Const'

    könnte ich ja noch beseitigen. Aber bei

    Code
    D:\Programme\AutoIt3\Include\FileDialogsEx.au3(171,74) : ERROR: undefined macro.
    	Local $taFilters, $tFile, $_OFN_HookProc = 0, $fUnicode = @AutoItUnicode,

    scheitere ich, da dieses Mkro vor meiner Zeit war und ich nicht weis was es repräsentiert,

    mfg autoBert

  • FileOpenDialog maximiert darstellen

    • autoBert
    • 2. November 2012 um 12:58

    @Xeno: du solltest auch die FileDialogsEx.au3 mit einstellen. Sie scheint keine Standard-UDF zu sein, denn:

    Code
    >Running AU3Check (1.54.19.0)  from:D:\Programme\AutoIt3
    D:\Programme\AutoIt3\Test\asdfa.au3(3,9) : ERROR: can't open include file <FileDialogsEx.au3>
    #include<FileDialogsEx.au3>

    mfg autoBert

  • UpdateScript umwandeln

    • autoBert
    • 1. November 2012 um 17:57

    Sorry, aber dies ist lt. Regeln von SoftPedia nicht erlaubt:

    Zitat

    8. Prohibited activities
    The following is a list of the kind of Content that is illegal or prohibited to post on or through the Softpedia Services. Softpedia.com reserves the right to investigate and take appropriate legal action against anyone who, in Softpedia.com's sole discretion, violates this provision. Prohibited Content (the list is not limited and can at any time be subject to alteration by Softpedia at its sole discretion) includes content that:
    - is offensive and promotes racism, bigotry, hatred, physical harm or harassment of any kind against any group or individual;
    - exploits people in a sexual or violent manner;
    - contains nudity, violence, or offensive subject matter or contains a link to an adult website;
    - promotes information that you know is false or misleading or promotes illegal activities or conduct that is abusive, threatening, obscene, defamatory or libelous;
    - promotes an illegal or unauthorized copy of another person's copyrighted work, such as providing pirated computer programs or links to them, or providing pirated music or links to pirated music files;
    - involves the transmission of "junk mail," "chain letters," or unsolicited mass mailing, instant messaging, "spimming," or "spamming";
    - furthers or promotes any criminal activity or enterprise or provides instructional information about illegal activities including, but not limited to making or buying illegal weapons, violating someone's privacy, or providing or creating computer viruses;
    - solicits passwords or personal identifying information for commercial or unlawful purposes from other Users;
    - involves commercial activities and/or sales without our prior written consent;
    - covers or obscures any of the Softpedia marks when using Softpedia services;
    - is automatically created by any sort of script meant to add friends or send comments or messages;
    - involves using the account, username, or password of another Member at any time;
    - means in any way using the Softpedia Services in a manner inconsistent with any and all applicable laws and regulations.

    Alles anzeigen
  • Chatbot Susi

    • autoBert
    • 1. November 2012 um 10:30

    Hallo Freeman,

    du musst doch nur die eigehenden Nachrichten auf das gewünschte überprüfen und wenn ja mit GuiCtrlSetState die $Checkbox4 abwählen und danach $Checkbox5 anwählen. Ob du auch Programmfunktionen aufrufen musst kannst nur du wissen, da du den aktuellen Quellcode ja unter Verschluss hälst:

    Zitat von Ququknife

    wie war denn nochmal das komplette programm?

    Zitat von Freeman

    ich weiß genau nicht was du meinst.


    und sich mit Sicherheit niemand die Mühe macht aus deinen Schnipseln und sehr kurzen Hinweisen das Skript zu aktulisieren. Und selbst dann dürfte sich diese beide Stände noch unterscheiden,

    mfg autoBert

  • Ältere Dateien Löschen

    • autoBert
    • 31. Oktober 2012 um 14:25
    Zitat von mr_merlin

    Das einzige was noch nicht funktioniert ist, das alle (*.* - in deinem Skript nur *) Dateien in den rekursiven Ordner löschen.


    Da ich damals nur die Anforderung hatte mehrere Dateitypen in einem Rutsch zu löschen habe ich anscheinend auch nur dieses getestet. Habe den Fehler behoben (und das Skript im vorhergehenden Beitrag ausgetauscht).

    TheLuBu: ich vermute dass deine Lösung schneller ist, da bei mir ja jedesmal geprüft wird ob der Dateityp im Filter vorkommt, dafür ist meine Lösung dann auf jeden Fall schneller sobald mehrere Dateitypen so gelöscht werden sollen.

    mfg autoBert

  • Serverliste zur Auswahl stellen - gewählten Server anzeigen - von dem gewählten Server Office 2010 installieren

    • autoBert
    • 30. Oktober 2012 um 23:45
    Zitat von meistersun

    Der Status kann auf gelöst gesetzt werden oder kann ich das selber machen?


    Das kannst du selber machen. Einfach den 1.Beitrag bearbeiten, Präfix (nähe Überschrift) umstellen und absenden.

    mfg autoBert

  • Ältere Dateien Löschen

    • autoBert
    • 30. Oktober 2012 um 19:54

    Ich habe vor längerer Zeit Oscars Funktion erweitert damit man mehrere Dteitypen auf eimal löschen kann. Bei mir hat die Funktion zur Zufriedenheit gearbeitet.

    'FilesDeleteAfter.au3&quot;
    [autoit]

    #include-once
    #include <Date.au3>
    #include <Array.au3>

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

    ;===============================================================================
    ; Function Name: _FileDeleteAfterXDays($sPath, $iDays[, $bForceDel][, $bRek][, $bDirDel][, $bLog], [$sFilter])
    ; Description:: löscht Dateien in einem ausgewähltem Verzeichnis (rekursiv)
    ; nach einer angegebenen Anzahl von Tagen
    ; Parameter(s): $sPath = Verzeichnis, aus dem die Dateien gelöscht werden sollen.
    ; $iDays = Dateien, die älter als $iDays (in Tagen) sind, löschen.
    ; $bForceDel = wenn "True" werden auch Dateien/Verzeichnisse gelöscht,
    ; die gegen löschen geschützt sind ("R"-Attribut)
    ; $bRek = wenn "True" wird das Verzeichnis rekursiv (inkl. Unter-
    ; verzeichnisse) durchsucht.
    ; $bDirDel = wenn "True" wird das Unterverzeichnis gelöscht, wenn
    ; es (aufgrund der Löschaktion) leer ist.
    ; $bLog = wenn "True" wird das Ergebnis der Löschaktion in die
    ; Console geschrieben.
    ; $sFilter hier können Dateierweiterungen (mit | getrennt) gegeben werden für welche die Löschaktion gilt *=alle
    ; Requirement(s): AutoIt-Version min. v3.3.2.0
    ; #include <Date.au3>
    ; Return Value(s): bei Erfolg Rückgabe = 1
    ; bei Fehler Rückgabe = 0
    ; und @error:
    ; 1 = $iDays ist keine oder eine negative Zahl
    ; 2 = Das übergebene Verzeichnis existiert nicht oder ist leer.
    ; Author(s): Oscar (http://www.autoit.de)
    ; Micha_he (http://www.autoit.de)
    ; modified: autoBert 18.05.12 um $sFilter erweitert
    ; Example: _FileDeleteAfterXDays('c:\', 10, True, True, True, True, "bak|tmp|tst")
    ;===============================================================================
    Func _FileDeleteAfterXDays($sPath, $iDays, $bForceDel = False, $bRek = True, $bDirDel = True, $bLog = True, $sFilter = "*")
    Local $hSearchm, $hEmpty, $sFile, $sDate, $iRet
    ;ConsoleWrite($sFilter & @CRLF)
    Local $aFilter = StringSplit($sFilter, "|")
    If @error Then
    $aFilter[0] = $sFilter
    _ArrayDelete($aFilter, 1)
    Else
    _ArrayDelete($aFilter, 0)
    EndIf
    If (Not IsNumber($iDays)) Or ($iDays < 0) Then Return SetError(1, 0, 0)
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Then Return SetError(2, 0, 0)
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If @extended Then
    If $bRek Then
    _FileDeleteAfterXDays($sPath & $sFile, $iDays, $bForceDel, $bRek, $bDirDel, $bLog, $sFilter)
    If $bDirDel Then
    $hEmpty = FileFindFirstFile($sPath & $sFile & '\*.*')
    If @error Then
    If $bForceDel Then FileSetAttrib($sPath & $sFile, '-R')
    $iRet = DirRemove($sPath & $sFile)
    If $bLog Then ConsoleWrite('Delete Folder "' & $sPath & $sFile & '" = ' & StringMid('No Yes', $iRet * 3 + 1, 3) & @CR)
    EndIf
    FileClose($hEmpty)
    EndIf
    EndIf
    Else
    $sDate = StringRegExpReplace(FileGetTime($sPath & $sFile, 0, 1), '(\d{4})(\d{2})(\d{2})(.*)', '$1/$2/$3')
    If _DateDiff('D', $sDate, _NowCalc()) > $iDays Then
    $aExt = StringSplit($sPath & $sFile, ".")
    If $aFilter[0] = "*" Then
    $bDel = True
    Else
    $bDel = False
    For $i = 0 To UBound($aFilter) - 1
    If $aExt[$aExt[0]] = $aFilter[$i] Then
    $bDel = True
    ExitLoop
    EndIf
    Next
    EndIf
    If $bDel Then
    If $bForceDel Then FileSetAttrib($sPath & $sFile, '-R')
    $iRet = FileDelete($sPath & $sFile)
    If $bLog Then ConsoleWrite('Delete File "' & $sPath & $sFile & '" = ' & StringMid('No Yes', $iRet * 3 + 1, 3) & @CR)
    EndIf
    EndIf
    EndIf
    WEnd
    FileClose($hSearch)
    Return 1
    EndFunc ;==>_FileDeleteAfterXDays

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

    ;#cs
    #include <FilesDeleteAfter.au3>

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

    _FileDeleteAfterXDays('C:\Temp', 10)
    #ce

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

    Aufruf:

    [autoit]

    #include <FilesDeleteAfter.au3>

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

    _FileDeleteAfterXDays('c:\', 10, True, True, True, True, "pdf|bak|tst" ;löscht alle .pdf und alle *.bak und alle .tst auf Laufwerk c: die älter ls10 Tage sind
    _FileDeleteAfterXDays('c:\Temp', 10" ;löscht alle Dteien in c:\Temp die älter als 10 Tage sind mit usnhme der versteckten

    [/autoit]

    mfg autoBert

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™