Acronis Image Überprüfen

  • Hey,

    habe wieder mal was vor ;) mit eurer hilfe werde ich das betimmt hinkriegen ;)

    Ich möchte in einem bestimmten verzeichnis Acronis Trueimage sicherungen prügen

    Ich lese zur zeit einen ordner inklusive unter odner *.tib " *.tib=acronis image"

    jetzt muss ich acronis sagen das er das image prüfen soll "siehe Gui"
    Den Parameter übergeben: das kriege ich auch noch hin:
    TrueImageTerminal.exe /execute:testserver.tis"

    so jetzt komme ich zu meinem Problem in der testserver.tis sind die parameter hinterlegt welcher server gepüft werden soll.
    welcher pfade und der dateiname wie kriege ich das hin ????.

    bin mir da nicht sicher wie ich das machen soll ??? ?(

    zweites Problem

    und so sieht die DOSBOX aus wenn es fehlschlägt:
    ####################################################################
    TrueImageTerminal.exe /execute:testserver.tis"
    I00640072:Der Zeitplan für die Ausführung des Skripts wurde erfolgreich aktivie
    t.
    Operation wurde gestartet. Klicken Sie Strg+C, um das Terminalfenster zu
    schließen oder Strg+B, um die Aktion abzubrechen.
    -------------------------------------------------------------------------------
    Image-ÜberprüfungVon Datei: "C:\Program Files\Acronis\TrueImageEnterprise
    \testserver.tib"Bereite Operation vor: "Aktuelle check-Operation"...

    Fortschritt gesamt:
    [Fertig gestellt ] [..................................]0%
    Fehler bei Operation. Details finden Sie in der Ereignisanzeige.
    ######################################################################
    und so sieht die DOSBOX aus wenn es erfolgreich war:
    ######################################################################
    TrueImageTerminal.exe" /execute:"C:\Program Files\Acronis\TrueImageEterprise\testserver.tis" /progress
    Operation wurde gestartet. Klicken Sie Strg+C, um das Terminalfenster zu
    schließen oder Strg+B, um die Aktion abzubrechen.
    -------------------------------------------------------------------------------
    Image-ÜberprüfungVon Datei: "C:\Program Files\Acronis\TrueImageEnterprise
    \testserver.tib"Operation 1 von 1Imagearchiv überprüfen

    Fortschritt der aktuellen Aktion: Fortschritt gesamt:
    [#.................................]21% [#######...........................]21%

    -------------------------------------------------------------------------------
    Image-ÜberprüfungVon Datei: "C:\Program Files\Acronis\TrueImageEnterprise
    \testserver.tib"Operation 1 von 1Imagearchiv überprüfen

    Fortschritt der aktuellen Aktion: Fortschritt gesamt:
    [#.................................]21% [#######...........................]21%
    00640072:Der Zeitplan für die Ausführung des Skripts wurde erfolgreich aktivier
    .
    [#.................................]99% [#################################.]99%

    -------------------------------------------------------------------------------
    Image-ÜberprüfungVon Datei: "C:\Program Files\Acronis\TrueImageEnterprise
    \testserver.tib"Synchronisation mit dem Betriebssystem...

    Fortschritt der aktuellen Aktion: Fortschritt gesamt:
    [..................................]0% [Fertig gestellt ]

    -------------------------------------------------------------------------------
    Image-ÜberprüfungVon Datei: "C:\Program Files\Acronis\TrueImageEnterprise
    \testserver.tib"Synchronisation mit dem Betriebssystem...

    Fortschritt der aktuellen Aktion: Fortschritt gesamt:
    [..................................]0% [Fertig gestellt ]

    -------------------------------------------------------------------------------
    Image-ÜberprüfungVon Datei: "C:\Program Files\Acronis\TrueImageEnterprise
    \testserver.tib"Synchronisation mit dem Betriebssystem...

    Fortschritt der aktuellen Aktion: Fortschritt gesamt:
    [..................................]0% [Fertig gestellt ]
    Operation abgeschlossen.
    ############################################################################
    Leider wenn ich die ausgabe der dosbox umleite kommt kein ergebniss da er ja die Prozenzte hochzählt??

    Wie kann ich abfragen ob er erfolgreich war oder nicht und einen statusbalken ?


    Würde mich über jede hilfe freuen

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    Local $path = '\\server\share\sicherung' ; Pfad mit den Unterordnern
    Local $log = '*.tib'
    Local $aFolder = _FileListToArray($path, '*', 2)
    Global $aLV_Item[1][2] = [['']]
    Local $ind, $aInd, $text

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

    $gui = GUICreate('Acronis Image Check', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)

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

    For $i = 1 To UBound($aFolder) -1
    If FileExists($path & '\' & $aFolder[$i] & '\' & $log) Then
    If $aLV_Item[UBound($aLV_Item)-1][0] <> '' Then ReDim $aLV_Item[UBound($aLV_Item)+1][2]
    $aLV_Item[UBound($aLV_Item)-1][0] = $path & '\' & $aFolder[$i] & '\' & $log
    $aLV_Item[UBound($aLV_Item)-1][1] = $aFolder[$i] & '.tib'
    GUICtrlCreateListViewItem($aFolder[$i] & '.tib', $LV)
    EndIf
    Next

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    Case $button
    $ind = _GUICtrlListView_GetSelectedIndices($hLV)
    If $ind Then
    $text = _GUICtrlListView_GetItemText($hLV, $ind)
    $aInd = _ArraySearch($aLV_Item, $text, 0, 0, 0, 0, 1, 1)
    If Not @error Then MsgBox(0, 'Pfad', 'Der Pfad zum image:' & @lf & $aLV_Item[$aInd][0])
    EndIf
    Case $Imagecheck
    EndSwitch
    WEnd

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


    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.


    Würde mich über jede Unterstützung freuen ;)

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    2 Mal editiert, zuletzt von subzero007 (8. Juli 2009 um 17:06)

  • Moin,

    ich würde StdOutRead dafür verwenden ...

    Zum Auslesen des Fortschritts und zur Fehlerprüfung ...

    [autoit]

    $aResult = StringRegExp ($sStdOutRead, "Fortschritt.*\]\d?\d?%?")
    If (IsArray ($aResult)) Then
    _ArrayDisplay ($aResult)
    EndIf

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

    $error = "Fehler bei Operation."

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

    $success = "Operation abgeschlossen."

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

    If (StringInStr ($sStdOutRead, $error)) Then
    ;;; Fehler
    EndIf

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

    If (StringInStr ($sStdOutRead, $success)) Then
    ;;; Erfolg
    EndIf

    [/autoit]


    Gruß
    Greenhorn


  • ok ein Problem habe ich jetzt mit meiner Listview

    Ich muss in alle unter ordner nach *.tib durchsuchen??
    das item was in der Listview dargestellt wird ergibt sich zur zeit aus dem Ordnernamen & .tib

    jetzt muss ich wie folgt die server in der Listview darstellen,
    also in alle unterorder gehen und nach *.tib suchen:

    \\server\share\sicherung\server1\server1.tib
    \\server\share\sicherung\server2\server2.tib
    \\server\share\sicherung\server3\server3.tib
    \\server\share\sicherung\server4\server4.tib
    \\server\share\sicherung\server5\server5.tib
    \\server\share\sicherung\server6\server6.tib
    \\server\share\sicherung\server7\server7.tib
    \\server\share\sicherung\server8\server8.tib
    \\server\share\sicherung\server9\server9.tib
    \\server\share\sicherung\server10\server10.tib
    \\server\share\sicherung\server11\server11.tib
    \\server\share\sicherung\server12\server12.tib
    \\server\share\sicherung\server13\server13.tib

    \\server\share\sicherung\app\server1\server1_montag.tib
    \\server\share\sicherung\app\server1\server1_dienstag.tib
    \\server\share\sicherung\app\server2\server2_montag.tib
    \\server\share\sicherung\app\server2\server2_dienstag.tib
    \\server\share\sicherung\app\server3\server3_montag.tib
    \\server\share\sicherung\app\server3\server3_dienstag.tib

    und so sollte es in der listview dargestellt werden:
    server1.tib
    server2.tib
    server3.tib
    server4.tib
    server5.tib
    server6.tib
    server7.tib
    server8.tib
    server9.tib
    server10.tib
    server11.tib
    server12.tib
    server13.tib
    server1_montag.tib
    server1_dienstag.tib
    server2_montag.tib
    server2_dienstag.tib
    server3_montag.tib
    server2_dienstag.tib

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    Local $path = '\\server\share' ; Pfad mit den Unterordnern
    Local $log = '*.tib'
    Local $aFolder = _FileListToArray($path, '*', 2)
    Global $aLV_Item[1][2] = [['']]
    Local $ind, $aInd, $text

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

    $gui = GUICreate('Acronis Image Check', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)

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

    For $i = 1 To UBound($aFolder) -1
    If FileExists($path & '\' & $aFolder[$i] & '\' & $log) Then
    If $aLV_Item[UBound($aLV_Item)-1][0] <> '' Then ReDim $aLV_Item[UBound($aLV_Item)+1][2]
    $aLV_Item[UBound($aLV_Item)-1][0] = $path & '\' & $aFolder[$i] & '\' & $log
    $aLV_Item[UBound($aLV_Item)-1][1] = $aFolder[$i] & '.tib'
    GUICtrlCreateListViewItem($aFolder[$i] & '.tib', $LV)
    EndIf
    Next

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    Case $button
    $ind = _GUICtrlListView_GetSelectedIndices($hLV)
    If $ind Then
    $text = _GUICtrlListView_GetItemText($hLV, $ind)
    $aInd = _ArraySearch($aLV_Item, $text, 0, 0, 0, 0, 1, 1)
    If Not @error Then MsgBox(0, 'Pfad', 'Der Pfad zum image:' & @lf & $aLV_Item[$aInd][0])
    EndIf
    Case $Imagecheck
    EndSwitch
    WEnd

    [/autoit]

    Könnt ihr mir bei meinem Problem helfen??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hi,

    [autoit]

    $sPath = "\\server\share\sicherung\app\server1\server1_montag.tib"

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

    $sLV_tib = StringRegExpReplace ($sPath, "(.*\\)(.*\.tib\z)", "\2")

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

    ConsoleWrite ($sLV_tib & @crlf)

    [/autoit]


    Gruß
    Greenhorn


  • und wie mache ich das für alle unterordner??
    Wie baue ich das hier ein??

    [autoit]

    For $i = 1 To UBound($aFolder) -1
    If FileExists($path & '\' & $aFolder[$i] & '\' & $log) Then
    If $aLV_Item[UBound($aLV_Item)-1][0] <> '' Then ReDim $aLV_Item[UBound($aLV_Item)+1][2]
    $aLV_Item[UBound($aLV_Item)-1][0] = $path & '\' & $aFolder[$i] & '\' & $log
    $aLV_Item[UBound($aLV_Item)-1][1] = $aFolder[$i] & '.tib'
    GUICtrlCreateListViewItem($aFolder[$i] & '.tib', $LV)
    EndIf
    Next

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hallo Bugfix ;)

    Problem ist ich bin nicht für die sicherung aller server zuständig aber dafür zuständig das sie laufen ;(
    ich spiele stichprobenartig images zurück aber das kann ich nicht für jeden server machen,
    zeit und hardware muss ja immer da sein
    so kann ich wenigstens etwas testen daher ;)
    Acronis Enterprise kann man einzelne images testen aber ihm keine liste übergeben das er alle testet ?(

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (9. Juli 2009 um 22:59)

    • Offizieller Beitrag

    Machs mal so:

    Spoiler anzeigen
    [autoit]

    ; Erstelle dein Listview so, dass es NICHT sortiert ist oder sortiert werden kann.
    ; Dann sind die Indexangaben identisch mit den Index im Array!

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

    ; ...
    ; ...
    $LV = GUICtrlCreateListView('....')
    $hLV = GUICtrlGetHandle($LV)
    ; ...
    ; ...

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

    Local $path = 'Dein_Suchpfad'
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tib', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) -1
    $FileName = StringRight($aFiles[$i], StringLen($aFiles[$i] - StringInStr($aFiles[$i], '\', -1)))
    _GUICtrlListView_AddItem($hLV, $FileName)
    Next

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

    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]

    [/autoit]
  • Hey Bugfix
    Danke erstmal ;)
    habe es jetzt in mien Script eingebaut.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    $gui = GUICreate('Acronis Image Check', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)
    GUISetState(@SW_SHOW)

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

    GLobal $path = 'c:\acronis'
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tib', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) -1
    $FileName = StringRight($aFiles[$i], StringLen($aFiles[$i] - StringInStr($aFiles[$i], '\', -1)))
    _GUICtrlListView_AddItem($hLV, $FileName)
    Next

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

    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]

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

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

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

    EndSwitch
    WEnd

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CRLF
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles,1)
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]

    Habe aber in meiner listview nur einträge die sich ib nennen ???

    Gruß
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • So wollte nur mein Aktuelles Script Posten .
    Habe noch ein Problem das in der lisview:

    [autoit]

    $FileName = StringRight($aFiles[$i], StringLen($aFiles[$i] - StringInStr($aFiles[$i], '\', -1)))

    [/autoit]


    Wo ist hier der fehler?

    er zeigt nur die letzten 2 buchstaben der datei:
    ib
    Ich wollte aber den dateinamen darstellen wie mache ich das?
    Also als beispiel:
    server1.tib

    Eine frage noch ich wollte irgendwie noch loggen welche immages bereits geprüft worden sind und welche images neu erstellt worden sind .
    Sollte ichj mir jetzt darüber gedanken machen oder Später nicht das ich Später wieder von vorne anfangen muss?

    Gruß
    SubZero

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Array.au3>

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

    $gui = GUICreate('Acronis Image Check', 600, 650, -1, -1)
    $LV = GUICtrlCreateListView('Images', 20, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $hLV = GUICtrlGetHandle($LV)
    $LVio = GUICtrlCreateListView('Erfolgreich', 180, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $LVnio = GUICtrlCreateListView('Fehlerhaft', 370, 0, 150, 580)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)

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

    $button = GUICtrlCreateButton('Zeige Image Pfad', 20, 580, 100, 20)
    $Imagecheck = GUICtrlCreateButton('Image Prüfen', 20, 600, 100, 20)
    $Imagecheckall = GUICtrlCreateButton('Alle Images Prüfen', 20, 620, 100, 20)
    GUISetState(@SW_SHOW)

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

    GLobal $path = 'c:\acronis'
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tib', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) -1
    $FileName = StringRight($aFiles[$i], StringLen($aFiles[$i] - StringInStr($aFiles[$i], '\', -1)))
    _GUICtrlListView_AddItem($hLV, $FileName)

    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]
    MsgBox(0, '', $aFiles[$index])
    EndSwitch
    WEnd

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CRLF
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles,1)
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    2 Mal editiert, zuletzt von subzero007 (10. Juli 2009 um 11:47)