Hi,
hab mal wieder ein kleines Problem. Für euch Profis sicher nur ein Problemchen .
Ich nutze das Datensicherungsprogramm Backer 6.6.
Mit ihm kann ich Datensicherungen in einen Ordner erstellen. Dieser Ordner wird dann mit dem aktuellen Datum versehen.
Für dieses Tool habe ich nun ein "Zusatz-Tool" geschrieben.
Dieses benennt mir einen von mir gewählten Ordner mit älterem Datum in einen Ordner mit heutigem Datum um.
Ist für das Script nicht unbedingt wichtig, nur damit ihr wisst um was es grob geht.
Nun zu meinem Problem.
Ich habe im Backer 3 solcher Sicherungsprofile.
Mein Script durchläuft eine Schleife und prüft welches dieses 3 Profile gewählt wurde.
Je nachdem welches gewählt wurde, wird dann der Zielordner anders gewählt.
Wenn ich ein Profil auswähle, wählt mein Script den richtigen Ordner aus.
Wenn ich dies wiederhole klappt es auch.
Wenn ich jedoch ein anderes Profil (also ein anderes Element $i der Schleife) auswähle, bleibt der Ordner bestehen, obwohl sich dieser eigentlich ändern müßte.
Nun ist meine Frage, warum dies nicht klappt
Hier mein Script:
Spoiler anzeigen
;------------------------------------------------------------------------------------------------------------------------------------
;Dieses Script ist bei der Anwendung des Backers hilfreich.
;Soll einen neue Sicherung angelegt werden, so bietet sich folgende Möglichkeit:
;Vor der Anwendung des Backers ein altes Verzeichnis mit Sicherungsdatum umbenennen in ein Verzeichnis mit heutigem Datum.
;Damit sichert Backer nicht die geänderten Daten. Dies bringt eine Zeitersparnis.
;Jedesmal den Ordner im Explorer umzubenennen ist jedoch umständlich. Deshalb dieses Tool.
;Einfach über dieses Tool den Backer starten und ganz normal mit dem Backer arbeiten.
;Den Rest erledigt dieses Script im Hindergrund.
;Es gibt drei Buttons
;"umbenennen" = Es muß ein Ordner ausgewählt werden. Dieser wird dann in das heutige Datum umbenannt.
;"zurueck" = Falls aus Versehen auf das falsche Backer-Profil geklickt wurde, kommt man hier wieder zurück.
;"neuer Ordner" = Es wird ein neuer, zusätzlicher Ordner mit dem heutigen Datum erstellt.
;------------------------------------------------------------------------------------------------------------------------------------
#Include <Date.au3>
#include <GuiListView.au3>
#include <GuiList.au3>
#include <GUIConstants.au3>
#Include <Array.au3>
#Include <File.au3>
Dim $FileList2
[/autoit] [autoit][/autoit] [autoit]Opt("WinTitleMatchMode", 2)
[/autoit] [autoit][/autoit] [autoit];Tastenkombination zum Beenden des Backers und dieses Scripts
HotKeySet("^y", "_beenden")
;Anzahl der vorhandenen Backer .bac Dateien mit Sicherungsordnung mit Datum
$start = 0 ;Der Start-Wert ist die Zahl des ersten Ordners (immer 0)
$ende = 2 ;Der Ende-Wert ist die Zahl des letzten Ordners (siehe unbedingt anpassen) < < < < < < < < < < < < < < < < < < ändern > > > > > > > > > > > > > > > > > > >
Dim $Sicherungsdatei[$ende+1]
Dim $Pfad[$ende+1]
;unbedingt anpassen, nicht benötigte Einträge deaktivieren mit ;
$Sicherungsdatei[0] = "Daten" ;Name des Backer Profils (ohne.bac)
$Sicherungsdatei[1] = "Internet" ;Name des Backer Profils (ohne.bac)
$Sicherungsdatei[2] = "Peter" ;Name des Backer Profils (ohne.bac)
$Pfad[0] = "N:\Datensicherung\Daten\" ;Ordner der Sicherungen
$Pfad[1] = "N:\Datensicherung\Internet\" ;Ordner der Sicherungen
$Pfad[2] = "N:\Datensicherung\Peter\" ;Ordner der Sicherungen
;Startdatei vom Backer
$backer = "N:\Backer\Backer6.exe"
;---------------------- A B H I E R K E I N E A N P A S S U N G M E H R N Ö T I G ------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];GUI erstellen
GUICreate("umbenennen", 230, 450)
$umbenennen = GUICtrlCreateButton("umbenennen", 15, 390, 50, 50, $BS_ICON)
$zurueck = GUICtrlCreateButton("zurück", 90, 390, 50, 50, $BS_ICON)
$ohne = GUICtrlCreateButton("neuer Ordner", 165, 390, 50, 50, $BS_ICON)
GUICtrlSetImage ($umbenennen, "shell32.dll", 146)
GUICtrlSetImage ($zurueck, "shell32.dll", 27)
GUICtrlSetImage ($ohne, "shell32.dll", 205)
GUICtrlCreateLabel("umbenennen", 8, 365, -1, -1, $SS_CENTERIMAGE)
GUICtrlCreateLabel("zurück", 99, 365, -1, -1, $SS_CENTERIMAGE)
GUICtrlCreateLabel("neuer Ordner", 158, 365, -1, -1, $SS_CENTERIMAGE)
$listview = GUICtrlCreateListView("Bild", 75, 60, 80, 300, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_SORTDESCENDING, $LVS_SINGLESEL));$LVS_SORTDESCENDING ;$LVS_SORTASCENDING
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
_GUICtrlListViewSetColumnWidth($listview, 0, 75)
Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview)]
_GUICtrlListViewSort($listview, $B_DESCENDING, 1)
;-------------------------------------------------------------------------------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];Backer starten und warten bis er geladen wurde
Run($backer)
WinWait("<unbenannt>.bac - Backer 6")
;-------------------------------------------------------------------------------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];Aktionen während der Hauptbildschirm vom Backer da ist
While 1
For $i = $start to $ende
Select
Case WinExists($Sicherungsdatei[$i] & ".bac - Backer 6")
GUICtrlCreateLabel(" ", 75, 10, 80, -1, $SS_CENTERIMAGE)
GUICtrlSetBkColor(-1, 0xFFD700)
GUICtrlSetData (-1, $Sicherungsdatei[$i])
GUICtrlCreateLabel(" ", 75, 30, 80, -1, $SS_CENTERIMAGE)
GUICtrlSetBkColor(-1, 0xFFD700)
GUICtrlSetData (-1, StringReplace(_NowCalcDate(), "/", "."))
Sleep(50)
_aendern()
Case NOT WinExists("Backer 6")
Exit
EndSelect
Next
WEnd
;Prüfung, ob der heutige Ordner bereits exisitert
Func _aendern()
If NOT FileExists($Pfad[$i] & StringReplace(_NowCalcDate(), "/", ".")) Then
WinWait($Sicherungsdatei[$i] & ".bac - Backer 6", "Abbrechen")
Send("{ENTER}")
WinWait("Zusammenfassung - " & $Sicherungsdatei[$i] & ".bac - Backer 6", "&OK")
Send("{ENTER}")
_GUICtrlListViewDeleteAllItems ($listview) ;alle Einträge im ListView löschen
_eintragen()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $umbenennen ;Button zum umbenennen
_umbenennen()
Case $msg = $zurueck ;Button zum verlassen der GUI
_zurueck()
ExitLoop
Case $msg = $ohne ;Button: neuer Ordner anlegen und kopieren
DirCreate($Pfad[$i] & StringReplace(_NowCalcDate(), "/", "."))
Sleep(50)
_zurueck()
ExitLoop
Case $msg = $GUI_EVENT_CLOSE
_zurueck()
ExitLoop
EndSelect
WEnd
Else
EndIf
EndFunc
;Vorhandene Ordner in die ListView eintragen
Func _eintragen()
GUIsetState(@SW_SHOW)
$FileList2 = _FileListToArray($Pfad[$i], "*", 2)
_ArraySort($FileList2, 1)
;~ _ArrayDisplay($FileList2,"$test1")
For $i = 1 To UBound($FileList2)-1
GUICtrlCreateListViewItem($FileList2[$i], $listview)
Next
EndFunc
;Ordner ausgewählt, dann diesen in das aktuelle Datum umbenennen
Func _umbenennen()
Local $list = _GUICtrlListViewGetSelectedIndices($listview, 1)
If _GUICtrlListViewGetSelectedCount($listview) = 0 Then ;Prüfung, ob 1 Eintrag ausgewählt ist
MsgBox(64,"Keine Dateien markiert", "Bitte markieren Sie die zu kopierenden Dateien")
Else
If (IsArray($list)) Then
Local $k
;~ _ArrayDisplay($list,"$test")
For $k = 1 To $list[0]
DirMove($Pfad[$i] & $FileList2[$list[$k]+1], $Pfad[$i] & StringReplace(_NowCalcDate(), "/", "."), 1)
Next
_zurueck()
EndIf
EndIf
EndFunc
;zum Backer zurückkehren
Func _zurueck()
GUIsetState(@SW_HIDE)
If FileExists($Pfad[$i] & StringReplace(_NowCalcDate(), "/", ".")) Then
WinWait($Sicherungsdatei[$i] & ".bac - Backer 6")
Send("{ENTER}")
EndIf
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];Bei drücken der Tastenkombination wird der Backer und dieses Script beendet
Func _beenden()
Winclose("Backer 6")
Exit
EndFunc
Die "Funktionsweise"
Ich drücke das Backer-Profil "Daten"
Nun wird durch die (fehlerhafte ???) Schleife der Eintrag ausgewählt
Dann kommt die GUI
Dann wird die Funktion _aendern gestartet
In _aendern wird u. a. die ListeView geleert
Ich drücke den Button "zurueck"
Dadurch wird die Funktion _zurueck gestartet
Dadurch wird die GUI versteckt und man gelangt zum Backer zurück.
Achso nochwas: Dies ist kein Problem des Backers. Es muss an meinem Script liegen :tongue:
Hoffe es wird einigermaßen klar was ich meine
Danke