Hi Leute.
Folgendes Problem.
Ich habe 2 mal FileListToArray. das eine vom Quellordner, das andere vom Ziel...
Nu möchte ich die beiden Arrays miteinander vergleichen und wenn ein Eintrag im Ziel-Array nicht vorhanden ist, die entsprechende Datei dann kopieren.
Was mir noch Kopfzerbrechen beritet ist, dass ich auch Ordner habe, die auch Unterordner enthalten könnten.
Mir will einfach nicht in die Birne, wie ich die beiden Programmschnipsel realisieren soll.
Hat da jemand von euch vielleicht mal eine Idee?
Hier ist mein bisheriger Code. Ich weiß das Gui könnte man schöner und funktionaler gestalten, aber das ist mein erstes. Kann nur besser werden.
Spoiler anzeigen
; By Hexpirator
[/autoit] [autoit][/autoit] [autoit]; Das Script soll Dateien aus dem Quellordner mit denen aus dem Zielordner
; vergleichen und neu hinzugefügten Dateien in den Zielordner kopieren.
#include <File.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Dateiarchivierer", 402, 293, 261, 151)
$Datei = GUICtrlCreateMenu("&Datei")
$Quelle = GUICtrlCreateMenuItem("Quellordner auswählen... (Q)", $Datei)
$Ziel = GUICtrlCreateMenuItem("Zielordner auswählen... (Z)", $Datei)
$Beenden = GUICtrlCreateMenuItem("Programm Beenden... (Strg+X)", $Datei)
$Group1 = GUICtrlCreateGroup("Option wählen:", 8, 104, 377, 81)
$Radio_loeschen = GUICtrlCreateRadio("Daten im Quellordner löschen !!!", 24, 152, 177, 17)
$Radio_behalten = GUICtrlCreateRadio("Daten im Quellordner beibehalten", 24, 128, 185, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Modus wählen:", 8, 8, 377, 81)
$Radio_einmalig = GUICtrlCreateRadio("Daten einmalig abgleichen ?", 24, 32, 161, 17)
$Radio_automat = GUICtrlCreateRadio("Daten automatisch nach vorgegebener Zeit angleichen", 24, 56, 297, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Los = GUICtrlCreateButton("Los", 8, 224, 83, 33, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("By Hexpirator", 104, 240, 75, 17)
GUISetState(@SW_SHOW)
Dim $Form1_1_AccelTable[1][2] = [["^!p", $Ziel]]
GUISetAccelerators($Form1_1_AccelTable)
#EndRegion ### END Koda GUI section ###
; Variablen Deklaration
Global $OpenQuell = 0
Global $OpenZiel = 0
;----------------------
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
;-----------------------
Case $GUI_EVENT_CLOSE, $Beenden
Exit
;-----------------------
Case $Quelle
_Open_Quell()
;-----------------------
Case $Ziel
_Open_Ziel()
;-----------------------
Case $Radio_loeschen
_Radiodelete()
;-----------------------
Case $Los
_Los()
;-----------------------
EndSwitch
WEnd
Func _Open_Quell()
$OpenQuell = FileSelectFolder("Quellordner wählen", "Arbeitsplatz")
EndFunc
Func _Open_Ziel()
$OpenZiel = FileSelectFolder("Zielordner wählen", "Arbeitsplatz")
EndFunc
Func _Radiodelete()
$Option_Entscheidung = MsgBox(52, "Achtung!!!","Möchten Sie die Daten im" &@CRLF & "Quellordner wirklich löchen?")
;MsgBox(0,"lesen",$Option_Entscheidung) ;beim JA-drücken -> 6 beim NEIN -> 7
If $Option_Entscheidung = 7 Then
GUICtrlSetState($Radio_loeschen, $GUI_UNCHECKED)
GUICtrlSetState($Radio_behalten, $GUI_CHECKED)
EndIf
EndFunc
Func _Los()
[/autoit] [autoit][/autoit] [autoit]$Radio_einmalig_Status = GUICtrlRead ($Radio_einmalig)
$Radio_automat_Status = GUICtrlRead ($Radio_automat)
If $Radio_einmalig_Status = $Radio_automat_Status Then
MsgBox (48, "Modus","Bitte Modus wählen.")
Return
EndIf
$Radio_behalten_Status = GUICtrlRead ($Radio_behalten)
$Radio_loeschen_Status = GUICtrlRead ($Radio_loeschen)
If $Radio_behalten_Status = $Radio_loeschen_Status Then
MsgBox (48, "Option","Bitte Option wählen.")
Return
EndIf
$aFileList_Quell = _FileListToArray($OpenQuell)
[/autoit] [autoit][/autoit] [autoit]If @error = 1 Then
MsgBox(64,"Info","Bitte wählen Sie den Quellordner")
Else
_ArrayDisplay($aFileList_Quell, "Quelle")
EndIf
;Return
$aFileList_Ziel = _FileListToArray($OpenZiel)
If @error = 1 Then
MsgBox(64,"Info","Bitte wählen Sie den Zielordner")
Else
_ArrayDisplay($aFileList_Ziel, "Ziel")
EndIf
For $i = 1 to UBound($aFileList_Quell) -1
;
; Hier soll das rein was mir einfach nicht in die Birne will.
;
;$iIndex = _ArraySearch($aFileList_Ziel[$i],$aFileList_Quell[$i])
MsgBox(0, "Countup", $iIndex)
Next
MsgBox(0,"", "Start!")
EndFunc
[/autoit]