leider kein unterschied..
Beiträge von KCChris
-
-
keine idee?
-
Hallo,
ich möchte alle Dateien auf einem FTP nach 3 Tagen / 72 Stunden löschen lassen.
Trotz korrekter FTP - Daten ( keine @error s ) gibt _FTP_FileListToArray im Array [0][0] eine 0 zurück.
Weiß jemand was falsch ist?
Vielen Dank
[autoit]#include <FTPEx.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
#include <Array.au3>
Local $Server = '*************'
Local $User = '********'
Local $Pass = '*********'
Local $DauerInStunden = 72Local $ftp = _FTP_Open ("UploadFTP Verbindung")
[/autoit][autoit][/autoit][autoit]
If not @error Then
msgbox(16,"kein fehler","FTP Open erfolgreich")
_FTP_Connect ($ftp, $Server, $User, $Pass)
EndIf
If Not @error Then
msgbox(16,"kein fehler","FTPConnect erfolgreich")
Local $fileList = _FTP_ListToArrayEx($ftp, 0)_ArrayDisplay($fileList)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]EndIf
[/autoit]
_FTP_Close($ftp) -
Local $LatestFile[2] = [-1, ""]
processFiles("Backup*.exe", findLatest)
If $LatestFile[0] = -1 Then Exit ConsoleWrite("no executables found!" & @LF)
ShellExecute($LatestFile[1])Func findLatest($file)
Local $age = FileGetTime($file, 1, 1)
If $age > $LatestFile[0] Then
$LatestFile[0] = $age
$LatestFile[1] = $file
EndIf
EndFunc ;==>findLatestFunc processFiles($pattern, $callback)
Local $search = FileFindFirstFile($pattern), $result
While True
$file = FileFindNextFile($search)
If @error Then ExitLoop
$callback($file)
WEnd
EndFunc ;==>processFilesVielen Dank, gibt allerdings folgende Fehlermeldung : Hier
-
Hallo,
Überschrift des Themas ist evtl ein wenig unklar^^..
Folgendes Problem: Ich habe auf einem Server meine Backup.exe Datei
Eine Verknüpfung dorthin wird jedem Benutzer über GPO in das Autostart Verzeichnis gelegt.
Möchte ich nun die Backup.exe austauschen und ein User hat diese derweil geöffnet habe ich keinen Zugriff darauf.
Gibt es andere Möglichkeiten das Programm zu verteilen und offen für Updates zu halten? das Programm wrid in 99% der Fälle immer jemand offen haben, da wir auch über VPN von Zuhause aus arbeiten.
Grüße
-
Für Leute mit dem gleichen Problem..
[autoit];Func CheckLastBackup
[/autoit][autoit][/autoit][autoit]
Func _CheckLastBackup()$aFilelist = _FileListToArray($DirBackupLog)
[/autoit][autoit][/autoit][autoit]
If IsArray($aFilelist) <> 0 ThenDim $aFiledate[$aFilelist[0]+1]
[/autoit][autoit][/autoit][autoit]For $i = 1 To $aFilelist[0]
[/autoit][autoit][/autoit][autoit]
$aFiledate[$i] = FileGetTime($DirBackupLog & $aFilelist[$i], 0, 1)
Next
Global $LastLogfile = $DirBackupLog & $aFilelist[_ArrayMaxIndex($aFiledate, 1)]Local $t = _DateDiffPrepareFormat(FileGetTime($LastLogfile, 0))
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
if _DateDiff("h", $t, _NowCalc()) < 2 Then ;Backup ist weniger als 2 Stunden her
Return 1
Else
Return 0
EndIf
EndIfEndFunc
[/autoit]Habs so lösen können, vielen Dank.
-
Guten Tag zusammen,
bekomme folgende Fehlermeldung beim starten des Programmes:
Subscript used with non-Array variable. (Hier)
Ich vermute es liegt an folgendem Code, Fehler kommt nur dann, wenn im Ordner $DirBackupLog noch keine Dateien vorhanden sind.
[autoit];Func CheckLastBackup
[/autoit][autoit][/autoit][autoit]
Func _CheckLastBackup()$aFilelist = _FileListToArray($DirBackupLog)
[/autoit][autoit][/autoit][autoit]
Dim $aFiledate[$aFilelist[0]+1]
For $i = 1 To $aFilelist[0]
$aFiledate[$i] = FileGetTime($DirBackupLog & $aFilelist[$i], 0, 1)
Next
Global $LastLogfile = $DirBackupLog & $aFilelist[_ArrayMaxIndex($aFiledate, 1)]Local $t = _DateDiffPrepareFormat(FileGetTime($LastLogfile, 0))
[/autoit][autoit][/autoit][autoit]
if _DateDiff("h", $t, _NowCalc()) < 2 Then ;Backup ist weniger als 2 Stunden her
Return 1
Else
Return 0
EndIf
EndFuncFunc _DateDiffPrepareFormat($a)
[/autoit]
Return $a[0] & "/" & $a[1] & "/" & $a[2] & " " & $a[3] & ":" & $a[4] & ":" & $a[5]
EndFuncKann wer helfen?
-
Wow! Super, danke...
Für die mit dem gleichen Problem, so hab ichs gelöst:
[autoit]
$DirBackupLog ist der Ordner in dem die Logfiles liegen
[/autoit][autoit][/autoit][autoit]
Func _CheckLastBackup()$aFilelist = _FileListToArray($DirBackupLog)
[/autoit][autoit][/autoit][autoit]
Dim $aFiledate[$aFilelist[0]+1]
For $i = 1 To $aFilelist[0]
$aFiledate[$i] = FileGetTime($DirBackupLog & $aFilelist[$i], 0, 1)
Next
Global $LastLogfile = $DirBackupLog & $aFilelist[_ArrayMaxIndex($aFiledate, 1)]Local $t = _DateDiffPrepareFormat(FileGetTime($LastLogfile, 0))
[/autoit][autoit][/autoit][autoit]
if _DateDiff("h", $t, _NowCalc()) < 2 Then ;Backup ist weniger als 2 Stunden her
Return 1
Else
Return 0
EndIf
EndFuncFunc _DateDiffPrepareFormat($a)
[/autoit]
Return $a[0] & "/" & $a[1] & "/" & $a[2] & " " & $a[3] & ":" & $a[4] & ":" & $a[5]
EndFunc -
Folgendes:
Eine Funktion _Backup() soll nur dann aufgerufen werden wenn die neuste datei in U:\Backup\Logfiles nicht älter als 2 Stunden ist.
[autoit]$aFilelist = _FileListToArray("U:\Backup_Nespoli\Logfiles")
[/autoit][autoit][/autoit][autoit]
Dim $aFiledate[$aFilelist[0]+1]
For $i = 1 To $aFilelist[0]
$aFiledate[$i] = FileGetTime("U:\Backup_Nespoli\Logfiles" & '\' & $aFilelist[$i], 0, 1)
NextMsgBox(0, 'Test', 'Die aktuellste Datei ist: ' & $aFilelist[_ArrayMaxIndex($aFiledate, 1)])
[/autoit]Funktioniert bis dahin.. Allerdings fehlt mir die Berechnung .. Habe bereits mit _DateDiff versucht zu arbeiten aber bekomms nicht hin..
Vielen Dank !
-
Noch eine Frage...
Ist es möglich per Robocopy mehrere Logfiles (Für jede Ausführung ein eigenes mit Datum etc) zu erstellen oder muss ich das über Autoit machen ? (z.b. über die aktuelle uhrzeit als Logfiledateiname
-
Ja, Script funktioniert ohne weiteres aber fands halt nicht schön im Logfile.. Werde dann wohl auch mit /R&/W:0 arbeiten müssen....
Vielen Dank trotzdem :- )
edit:
Muss an der Formatierung liegen.. mit
[autoit]RunWait("Robocopy " & $DirDoc & " " & $DirBackupDoc & ' /MIR /R:3 /W:1 /XD "C:\Users\schienag\Documents\Eigene Bilder" /LOG+:U:\BackupLog\Documents.txt /NP' , "" ,@SW_SHOW)
[/autoit]funktionierts..
editeditedit: es funktioniert!!!
[autoit]RunWait("Robocopy " & $DirDoc & " " & $DirBackupDoc & ' /MIR /R:3 /W:1 /XD "'&$DirDoc &'Eigene Bilder" /XD "'&$DirDoc &'Eigene Musik" /XD "'&$DirDoc &'Eigene Videos" /LOG+:U:\BackupLog\Documents.txt /NP' , "" ,@SW_SHOW)
[/autoit] -
Vielen Dank,
allerdings immernoch folgendes im Log :
2014/03/20 14:55:44 FEHLER 5 (0x00000005) Quellverzeichnis wird berprft C:\Users\schienag\Documents\Eigene Bilder\
Zugriff verweigert1 Sekunden wird gewartet... Wiederholung...
2014/03/20 14:55:45 FEHLER 5 (0x00000005) Quellverzeichnis wird berprft C:\Users\benutzer\Documents\Eigene Bilder\
Zugriff verweigert1 Sekunden wird gewartet... Wiederholung...
2014/03/20 14:55:46 FEHLER 5 (0x00000005) Quellverzeichnis wird berprft C:\Users\benutzer\Documents\Eigene Bilder\
Zugriff verweigert1 Sekunden wird gewartet... Wiederholung...
2014/03/20 14:55:47 FEHLER 5 (0x00000005) Quellverzeichnis wird berprft C:\Users\benutzer\Documents\Eigene Bilder\
Zugriff verweigertFehler: Die maximale Anzahl von Wiederholungsversuchen wurde berschritten.
Versucht immernoch aus Eigene Bilder zu kopieren..
-
Meine Lösung sieht jetzt momentan so aus :
[autoit]
[/autoit][autoit][/autoit][autoit]
Global $DirPath = "U:"
Global $DirBackupDoc = "" & $DirPath & "Backup\Dokumente"
Global $DirDoc = @UserProfileDir & "\Documents"[...]
[/autoit][autoit][/autoit][autoit]RunWait(@ComSpec & " /c "& "robocopy "& $DirDoc & " " & $DirBackupDoc & " /MIR /R:3 /W:1 /LOG+:U:\BackupLog\Documents.txt /NP ", "" ,@SW_SHOW)
[/autoit][autoit][/autoit][autoit][/autoit]gerne würde ich folgende Parameter einfügen:
/XD C:\users\Documents/Eigene Bilder /XD C:\users\Documents/Eigene Musik C:\users\Documents/Eigene Videos
sprich: /XD $DirDoc & "Eigene Bilder
wie schreibe ich das genau ? bekomme dauernt nur fehlermeldungen weil die formatierung nicht stimmt vermute ich einmal..
-
Hallo,
ich bin momentan dabei, ein Backup Tool für Laptops in Autoit zu erstellen..
VPN Erkennung, Funktionsaufruf bei Idletime funktionieren ganz gut.. allerdings habe ich keine Ahnung wie ich weiter vorgehen soll.
Angekommen folgendes: ich möchte alle Daten von C:\Users\Test\Desktop auf U:\Backup verschieben (allerdings nur, wenn diese verändert wurden)
wie schreibe ich das am besten ?
Edit: Gerne würde ich dazu auch Logfiles ausgeben lassen..
-
Hallo,
wenn IP Adresse = 172.25.10.* soll ein Befehl ausgeführt werden.. Wie muss ich diese Zeile formatieren damit der * als beliebiger platzhalter verwendet wird?
Letztendlich soll also bei der ip 172.25.10.10 die ipadresse ausgegeben werden, ansonsten "error"..
[autoit]if @IPAddress1 = "172.25.10.*" Then
[/autoit]
msgbox(2,"test",@IPAddress1)
Else
msgbox(2,"error","erroe")
EndIfGrüße
-
Na gut, scheinbar nicht..
Ist es denn möglich den Text zu ändern, der beim Mouseover über das TrayIcon erscheint?
Momentan steht da ja nur "Backup.exe" bzw der Programmname.
Grüße
-
Programm funktioniert soweit. Jetzt gibts noch eine Sache:
Das Programm soll erkennen ob der Benutzer über VPN verbunden ist (kein Backup) oder direkt mit dem Firmennetzwerk lokal...
Gibts da 'ne andere Möglichkeit außer Pings abzugleichen?
Grüße
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <Constants.au3>
Opt('TrayMenuMode', 3)
Opt('TrayAutoPause', 0)
Opt('TrayIconHide', 0)
Global $TrayMan = TrayCreateItem('Manuelles Backup starten')
;Global $TrayLog = TrayCreateItem('LOG anzeigen')
local $BackupZeit
Global $LastBackup = TrayCreateItem('testestetst')
TrayItemSetState($LastBackup, $TRAY_DISABLE)
Global $TrayExit = TrayCreateItem('Beenden')
call("_ProgramFilesDir")
TraySetClick(16)
Global $LastBackupText = IniRead("U:\Backup\Backup.ini","Backup","LastBackup","Error")
TrayItemSetText($LastBackup,$LastBackupText)
While 1Switch TrayGetMsg()
[/autoit] [autoit][/autoit] [autoit]
Case $TrayMan
If Ping("nesdkbsvr01") > 0 Then
If Not FileExists("U:\Backup") Then
DirCreate ("U:\Backup")
Endif
If Not FileExists("U:\Backup\Documents") Then
DirCreate ("U:\Backup\Documents")
EndIf
If Not FileExists("U:\BackupLog") Then
DirCreate ("U:\BackupLog")
EndifCall("Backup")
[/autoit] [autoit][/autoit] [autoit]
Else
TrayTip ("Backup konnte nicht erstellt werden", "Keine Verbindung zum Firmennetzwerk!",0,3)
EndIf
; Case $TrayLog
Case $TrayExit
Exit ;
EndSwitchif @hour = 8 and @MIN = 0 and @SEC = 0 Then
[/autoit] [autoit][/autoit] [autoit]
TraySetState(4)
If Ping("Server") > 0 Then
call("Backup")
EndIf
EndIf
if @hour = 12 and @MIN = 30 and @SEC = 0 Then
TraySetState(4)
If Ping("Server") > 0 Then
call("Backup")
EndIf
EndIfif @hour = 16 and @MIN = 0 and @SEC = 0 Then
[/autoit] [autoit][/autoit] [autoit]
TraySetState(4)
If Ping("Server") > 0 Then
Call("Backup")
EndIf
EndIfWend
[/autoit] [autoit][/autoit] [autoit]Func Backup()
[/autoit]
TraySetState(4)
Switch(@OSVersion)
Case "WIN_7"
RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DocumentsCommonDir &'" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
Case "WIN_XP"
RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLo" -dateformat "$dd.$mm.$yy" -exit')
RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @UserProfileDir & '\Eigene Dateien" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
Case Default
MsgBox(0 16,"Fehler!","Ihre Windowsversion wird nicht unterstützt. Bitte melden Sie sich bei der EDV")
EndSwitch
TrayTip ("Backup", "Systembackup erfolgreich durchgeführt!",0,1)
IniWrite("U:\Backup\Backup.ini","Backup","LastBackup","Letzte Sicherung: " & @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & " : " & @MIN & " : " & @SEC)
$LastBackupText = IniRead("U:\Backup\Backup.ini","Backup","LastBackup","Error")
TrayItemSetText($LastBackup,$LastBackupText)
TraySetState(8)
sleep(1000)
EndFunc -
Funktioniert soweit.. Allerdings lese ich nun ja aus, wann der Order U:\Backup verändert wurde..
Ist es möglich auszugeben wann genau die Funktion Backup() ausgeführt wurde?Ist es auch irgendwie möglich, dass das Programm jedes mal wenn es die Funktion Backup() ausführt etwas in eine Textdatei schreibt und beim nächsten Systemstart dann dort wieder ausgelesen wird, wann das letzte Backup stattgefunden hat?
Grüße
So funktionierts bisher:
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <GUIConstants.au3>
#Include <Constants.au3>
Opt('TrayMenuMode', 3)
Opt('TrayAutoPause', 0)
Opt('TrayIconHide', 0)
Global $TrayMan = TrayCreateItem('Manuelles Backup starten')
;Global $TrayLog = TrayCreateItem('LOG anzeigen')
local $BackupZeit
Global $LastBackup = TrayCreateItem('Letztes erfolgreiches Backup:' & $BackupZeit)
Global $TrayExit = TrayCreateItem('Beenden')
call("_ProgramFilesDir")
;TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE,"Backup")
TraySetClick(16)
While 1
Local $Zeit = FileGetTime ("U:\Backup")
Local $BackupZeit = $Zeit[2] & "." & $Zeit[1] & "." & $Zeit[0] & " " & $Zeit[3] & ":" & $Zeit[4]
TrayItemSetText($LastBackup,'Letztes erfolgreiches Backup: ' & $BackupZeit)Switch TrayGetMsg()
[/autoit][autoit][/autoit][autoit]
Case $TrayMan
If Ping("nesdkbsvr01") > 0 Then
If Not FileExists("U:\Backup") Then
DirCreate ("U:\Backup")
Endif
If Not FileExists("U:\Backup\Documents") Then
DirCreate ("U:\Backup\Documents")
EndIf
If Not FileExists("U:\BackupLog") Then
DirCreate ("U:\BackupLog")
EndifCall("Backup")
[/autoit][autoit][/autoit][autoit]
Else
TrayTip ("Backup konnte nicht erstellt werden", "Keine Verbindung zum Firmennetzwerk!",0,3)
EndIf
; Case $TrayLog
Case $TrayExit
Exit ;
EndSwitchif @hour = 8 and @MIN = 0 and @SEC = 0 Then
[/autoit][autoit][/autoit][autoit]
TraySetState(4)
If Ping("Server") > 0 Then
call("Backup")
EndIf
EndIf
if @hour = 12 and @MIN = 30 and @SEC = 0 Then
TraySetState(4)
If Ping("Server") > 0 Then
call("Backup")
EndIf
EndIfif @hour = 16 and @MIN = 0 and @SEC = 0 Then
[/autoit][autoit][/autoit][autoit]
TraySetState(4)
If Ping("Server") > 0 Then
Call("Backup")
EndIf
EndIfWend
[/autoit][autoit][/autoit][autoit]Func Backup()
[/autoit]
TraySetState(4)
Switch(@OSVersion)
Case "WIN_7"
RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DocumentsCommonDir &'" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
Case "WIN_XP"
RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLo" -dateformat "$dd.$mm.$yy" -exit')
RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @UserProfileDir & '\Eigene Dateien" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
Case Default
MsgBox(0 16,"Fehler!","Ihre Windowsversion wird nicht unterstützt. Bitte melden Sie sich bei der EDV")
EndSwitch
TrayTip ("Backup", "Systembackup erfolgreich durchgeführt!",0,1)
TraySetState(8)
sleep(1000)
EndFunc -
Hab mir das jetzt mal angeschaut..
Problem:Wenn ich TrayCreateItem in die Whileschleife nehm, erstellt er natürlich hunderte Trayitems, wenn ichs oben drin hab aktualisiert er das Datum nicht...
Wie kann ich das am besten lösen?
[autoit]
[/autoit]
#include <GUIConstants.au3>
Opt('TrayMenuMode', 3)
Opt('TrayAutoPause', 0)
Opt('TrayIconHide', 0)
Global $TrayMan = TrayCreateItem('Manuelles Backup starten')
;Global $TrayLog = TrayCreateItem('LOG anzeigen')
local $BackupZeit
Global $LastBackup = TrayCreateItem('Letztes erfolgreiches Backup:' & $BackupZeit)
Global $TrayExit = TrayCreateItem('Beenden')
call("_ProgramFilesDir")
TraySetClick(16)
While 1
Local $Zeit = FileGetTime ("U:\Backup")
Local $BackupZeit = $Zeit[3] & "." & $Zeit[1] & "." & $Zeit[0] & " " & $Zeit[3] & ":" & $Zeit[4] -
Ergibt Sinn...^^ Vielen Dank!
Du musst auch den Return wert von Stringreplace verwenden:
[autoit]$var = StringReplace(@DocumentsCommonDir,"Public",@Username)
[/autoit]
msgbox(0, "", $var)