Hallo zusammen,
Ich habe mir heute Morgen vorgenommen, ein Backupscript mithilfe vom
Cmdbefehl xcopy mit AutoIT zu schreiben, was den Vorteil hat, dass nur
neue/geänderte Daten kopiert werden.
Die Voraussetzung ist, das ich zwischen Laufwerken und 3 Wochentagen
unterscheiden kann. Herausgekommen ist bis jetzt der untenstehende
Code...
Nun bin ich mir nicht ganz sicher, ob das ganze so funktionieren wird,
ausserdem komme ich mit dem Run(@ComSpec... nicht ganz klar,
Ich möchte xcopy mit dem Parametern /d /y /e verwenden doch wie muss das ganze geordnet sein mit den Variablen...
Ausserdem wäre es schön, wenn ich die GUI per TryIcon aufrufen könnte
(z.B mit Doppelklick oder Rechtsklick), ist sowas realisierbar?
Bitte entschuldigt den noch unformatierten Code ![]()
Wichtig ist vielleicht noch, dass bei @WDay 1 Sonnatg ist, 2 Montag etc...
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ;Überprüft ob BackupRabbit.exe im Autostart ist, wenn nicht wird eine Kopie von sich selbst in den Autostart erstellt und löscht sich anschliessend selbst
If not FileExists(@StartupDir & "/" & "BackupRabbit.exe") Then
FileCopy(@ScriptFullPath, @StartupDir)
MsgBox(4096, 'Erste Benutzung', 'Sie müssen den Computer neu starten um das Programm nutzen zu können.')
MsgBox(4096, 'Erste Benutzung', 'Den Backupplaner öffnen Sie mit F8 oder über das TryIcon.')
_selfdelete()
EndIf
#EndRegion
While 1
HotKeySet("{F8}", "Fenster")
$Eingabe1 = IniRead(@UserName & "\BackupRabbit.ini", "Daten", "Von", "")
$Eingabe2 = IniRead(@UserName & "\BackupRabbit.ini", "Daten", "Nach", "")
$Eingabe4 = IniRead(@UserName & "\BackupRabbit.ini", "Daten", "Mittwoch", "")
$Eingabe5 = IniRead(@UserName & "\BackupRabbit.ini", "Daten", "Donnerstag", "")
$Eingabe6 = IniRead(@UserName & "\BackupRabbit.ini", "Daten", "Freitag", "")
If @WDAY = 4 Then
If $Eingabe4 = 1 Then
Run(@ComSpec .....???????????????????
EndIf
EndIf
If @WDAY = 5 Then
If $Eingabe5 = 1 Then
Run(@ComSpec .....???????????????????
EndIf
EndIf
If @WDAY = 6 Then
If $Eingabe6 = 1 Then
Run(@ComSpec .....???????????????????
EndIf
EndIf
WEnd
Func Fenster()
#Region ; GUI Daten
$BackupRabbit = GUICreate("BackupRabbit", 253, 137, 327, 131)
$Label1 = GUICtrlCreateLabel("Von:", 8, 32, 26, 17)
$Label2 = GUICtrlCreateLabel("Nach:", 8, 56, 33, 17)
$Label3 = GUICtrlCreateLabel("Wo?", 8, 8, 30, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("D:", 48, 32, 57, 21)
$Input2 = GUICtrlCreateInput("E:", 48, 56, 57, 21)
$Mittwoch = GUICtrlCreateCheckbox("Mittwoch", 136, 32, 97, 17)
$Donnerstag = GUICtrlCreateCheckbox("Donnerstag", 136, 64, 97, 17)
$Freitag = GUICtrlCreateCheckbox("Freitag", 136, 96, 97, 17)
$Label4 = GUICtrlCreateLabel("Wann?", 136, 8, 44, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Speichern = GUICtrlCreateButton("Speichern", 8, 80, 113, 33)
GUISetState(@SW_SHOW)
#EndRegion
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Speichern
#Region ;Liesst Wert von Checkboxen aus und schreibt sie in BackupRabbit.ini
If GUICtrlRead($Mittwoch) = 1 Then
IniWrite(@UserName & "\BackupRabbit.ini", "Daten", "Mittwoch", "1")
Else
IniWrite(@UserName & "\BackupRabbit.ini", "Daten", "Mittwoch", "0")
Endif
If GUICtrlRead($Donnerstag) = 1 Then
IniWrite(@UserName & "\BackupRabbit.ini", "Daten", "Donnerstag", "1")
Else
IniWrite(@UserName & "\BackupRabbit.ini", "Daten", "Donnerstag", "0")
Endif
If GUICtrlRead($Freitag) = 1 Then
IniWrite(@UserName & "\BackupRabbit.ini", "Daten", "Freitag", "1")
Else
IniWrite(@UserName & "\BackupRabbit.ini", "Daten", "Freitag", "0")
Endif
#EndRegion
#Region ;Liesst Wert von Inputboxen aus und schreibt sie in BackupRabbit.ini
$Von = Guictrlread($Input1)
$Nach = Guictrlread($input2)
IniWrite(@UserName & "\BackupRabbit.ini", "Daten", "Von", $Von)
IniWrite(@UserName & "\BackupRabbit.ini", "Daten", "Nach", $Nach)
#EndRegion
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Endfunc
Func _selfdelete($iWait = 1000) ;irgendwo hier im forum gefunden ![]()
ShellExecute(@ComSpec, '/c ping 0.0.0.1 -n 1 -w ' & $iWait & ' & del "' & @ScriptFullPath & '"', @ScriptDir, 'open', @SW_HIDE)
Exit
EndFunc
Edit Oscar: Spoiler eingefügt. Bitte bei längeren Quelltexten den Spoiler benutzen.