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 "_GetIntersection.au3"
#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 ###
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
;-----------------------
[/autoit] [autoit][/autoit] [autoit]Func _Open_Quell()
$OpenQuell = FileSelectFolder("Quellordner wählen", "Arbeitsplatz")
EndFunc
;-----------------------
Func _Open_Ziel()
$OpenZiel = FileSelectFolder("Zielordner wählen", "Arbeitsplatz")
EndFunc
;-----------------------
Func _Radiodelete()
[/autoit] [autoit][/autoit] [autoit]$Option_Entscheidung = MsgBox(52, "Achtung!!!","Möchten Sie die Daten im Quellordner" &@CRLF & "nach dem Kopiervorgang 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")
Return
Else
_ArrayDisplay($aFileList_Quell, "Quelle")
EndIf
$aFileList_Ziel = _FileListToArray($OpenZiel)
[/autoit] [autoit][/autoit] [autoit]If @error = 1 Then
MsgBox(64,"Info","Bitte wählen Sie den Zielordner")
Return
Else
_ArrayDisplay($aFileList_Ziel, "Ziel")
EndIf
; Unterschiede zwischen $aFileList_Quell und $aFileList_Ziel ermitteln und auflisten
$ret = _GetIntersection ($aFileList_Quell, $aFileList_Ziel,0, ' ')
$diff1 = ''
$diff2 = ''
If Not @error Then
For $i = 0 To UBound($ret) -1
If $ret[$i][1] <> '' Then $diff1 &= $ret[$i][1] & ' ; '
If $ret[$i][2] <> '' Then $diff2 &= $ret[$i][2] & ' ; '
Next
EndIf
If $diff1 <> $diff2 Then
$aUnterschied_Quell = StringSplit ($diff1,";")
;_ArrayDisplay ($aUnterschied_Quell,"$aUnterschied_Quell")
For $h = 1 To $aUnterschied_Quell[1]
FileCopy($OpenQuell & "\" & $aUnterschied_Quell[$h],$OpenZiel,9)
If @error = 1 Then
MsgBox (0,"","Fehler")
EndIf
Next
EndIf
;MsgBox(0, '', 'Unterschiede 1: ' & $diff1 & @LF & 'Unterschiede 2: ' & $diff2)
EndFunc
[/autoit]Sorry wegen meinem Programmierstil. Bin halt noch ein Newbie.