FileCopy Problem

  • He Leute, ich habe ein Problem, und zwar will ich erreichen, dass das Programm ein Backup von einer bestimmten Datei erstellt, wenn die Datei nicht vorhanden ist eine Meldung ausgibt und ansonsten die Datei von einem FTP Server herunterlädt.
    Das Problem ist, dass das Programm mir immer meldet, dass es die Datei nicht kopieren kann, selbst wenn sie da ist.

    Spoiler anzeigen
    [autoit]


    $copyerror = ''
    GUICtrlSetData($Progress1, 90)
    $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Usersname, $s_Password, $i_Passive)
    $file = 'craftbukkit.jar'
    $ziel = $folder & '\craftbukkit.jar'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 91)
    $file = 'banned-ips.txt'
    $ziel = $folder & '\banned-ips.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 92)
    $file = 'banned-players.txt'
    $ziel = $folder & '\banned.ips.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 93)
    $file = 'bukkit.yml'
    $ziel = $folder & '\bukkit.yml'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 94)
    $file = 'help.yml'
    $ziel = $folder & 'help.yml'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 95)
    $file = 'ops.txt'
    $ziel = $folder & 'ops.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 96)
    $file = 'permissions.yml'
    $ziel = $folder & 'permissions.yml'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel,1)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    $file = 'server.log'
    $ziel = $folder & 'server.log'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 97)
    $file = 'server.properties'
    $ziel = $folder & 'server.properties'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 98)
    $file = 'white-list.txt'
    $ziel = $folder & 'white-list.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 99)
    MsgBox(0, 'TEST', 'Finnisch mit Anderes')

    [/autoit]
    • Offizieller Beitrag
    Zitat von Fliwatt

    Das Problem ist, dass das Programm mir immer meldet, dass es die Datei nicht kopieren kann, selbst wenn sie da ist.


    Ist doch normal, wenn du keine Parameter bei FileCopy setzt. Standard für den 3. Parameter ist 0 und damit wird eine bestehende
    Datei nicht überschrieben und somit gibt FileCopy 0 zurück.

    Zitat von Hilfe

    dest Das Zielverzeichnis der zu kopierenden Datei(en).
    flag [optional] Dieses Flag bestimmt, ob Dateien überschrieben werden, falls sie schon bestehen.
    Kann eine Kombination der folgenden sein:
    0 = (Standard) bestehende Dateien nicht überschreiben
    1 = Überschreiben bestehender Dateien
    8 = Erstellt die Zielverzeichnisstruktur, falls diese nicht besteht (Siehe Anmerkungen).

    Benutze mal als 3. Parameter 1 oder 8 oder halt 9 für beides. Hilfe lesen ist so schwer :rolleyes:

  • Nein, hier sind die Variablen:

    Spoiler anzeigen
    [autoit]


    Global $worldname = 'world'
    $foldername = 'minesynctestserver'
    $folder = @ScriptDir & '\' & $foldername

    [/autoit]


    Das ist meine Ordnerstruktur:
    minesync.au3
    thisversion.ini
    minesync.exe
    minesynctestserver -> banned-ips.txt
    --------------------------->banned-players.txt
    --------------------------->bukkit.yml
    --------------------------->craftbukkit.jar
    --------------------------->help.yml
    --------------------------->ops.txt
    --------------------------->permissions.yml
    --------------------------->server.log
    --------------------------->server.properties
    --------------------------->white-list.txt
    EDIT: Raupi , das habe ich doch schon gemacht, wieso hat er das dann nicht übernommen, egal, ich hab das jetzt bei allen gemacht und es funktioniert trotzdem noch nicht

    • Offizieller Beitrag

    Zeig mal dein ganzes Script.
    Ich denke eventuell stimmt der Pfad nicht, kann man aber nicht überprüfen weil z.B. $folder nirgends deklariert ist.
    Zumindest nicht in dem Codefetzen, welchen du gepostet hast.
    GgF mal die Pfade per ConsoleWrite ausgeben lassen und überprüfen ob der Pfad stimmt.

  • Hier mein ganzes Script:

    Spoiler anzeigen
    [autoit]


    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=minesyncconsole.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Change2CUI=y
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    FileDelete(@TempDir & '\serverversion.ini')
    FileDelete(@TempDir & '\serverstate.ini')
    $foldername = 'minesynctestserver'
    $folder = @ScriptDir & '\' & $foldername
    Global $aResult[1]
    Global $s_ServerName = 'minesync.bplaced.de' ;das ist ein real existierender Server
    Global $s_Usersname = 'minesync'
    Global $s_Password = '##########'
    Global $i_Passive = 0 ;aktive Verbindung nutzen wenn bei anderen Server Probleme dann auch mit 1 für passive Verbung testen
    Global $sLocal = $folder
    Global $errOpen, $errFTP
    Global $s_LocalFile
    #include <Array.au3>
    #include <FTPEx.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include 'FTP_FileList_RecursivWA.au3'
    Global $possible = 1
    Global $disabled = 0
    Global $status = 'ready'
    Global $newstatus = 1
    Global $serveron = 0
    Global $worldname = 'world'
    $Minesync = GUICreate('Minesync', 404, 220, 206, 134)
    $Label1 = GUICtrlCreateLabel('Lade Minesync...', 16, 8, 358, 52)
    GUICtrlSetFont(-1, 30, 400, 0, 'MS Sans Serif')
    $Button1 = GUICtrlCreateButton('Abbrechen', 0, 64, 401, 121, $WS_GROUP)
    GUICtrlSetFont(-1, 30, 400, 0, 'MS Sans Serif')
    $Progress1 = GUICtrlCreateProgress(0, 184, 401, 33)
    GUISetState(@SW_SHOW)
    While 1
    If GUIGetMsg() = $Button1 Then Exit
    If $possible = 0 And $disabled = 0 Then
    GUICtrlSetState($Button1, $GUI_DISABLE)
    $disabled = 1
    ElseIf $possible = 1 And $disabled = 1 Then
    GUICtrlSetState($Button1, $GUI_ENABLE)
    $disabled = 0
    EndIf
    If $newstatus = 1 Then
    If $status = 'checkversion' Or $status = 'waitcancel' Then
    GUICtrlSetData($Label1, 'Überprüfe Version...')
    $newstatus = 0
    ElseIf $status = 'sync' Then
    GUICtrlSetData($Label1, 'Synchronisieren...')
    $newstatus = 0
    EndIf
    EndIf
    Switch $status
    Case 'ready'
    $status = 'checkversion'
    Case 'checkversion'
    GUICtrlSetState($Button1, $GUI_DISABLE)
    Global $file = 'serverversion.ini'
    Global $ziel = @TempDir & '\serverversion.ini'
    Local $l_FTPSession, $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
    $errOpen = @error
    If Not @error Then
    $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Usersname, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
    $errFTP = @error
    If Not @error Then
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    Else
    MsgBox(48, 'FEHLER', 'CODE:23 Konnte nicht Verbinden(passwort,etc. falsch?')
    EndIf
    Else
    MsgBox(48, 'FEHLER', 'CODE:22 Konnte Sitzung nicht öffnen')
    EndIf
    GUICtrlSetData($Progress1, 2)
    $versionserver = IniRead(@TempDir & '\serverversion.ini', 'server', 'version', 'notfound')
    $versionclient = IniRead('thisversion.ini', 'server', 'version', 'notfound')
    If $versionclient = 'notfound' Or $versionserver = 'notfound' Then
    MsgBox(48, 'FEHLER CODE:1', 'ini fehlerhaft, versionsabgleich, serverversion.ini:' & $versionserver & ',thisversion.ini: ' & $versionclient)
    _FTP_Close($l_InternetSession)
    Exit
    EndIf
    If $versionclient < $versionserver Then
    GUICtrlSetState($Button1, $GUI_ENABLE)
    $status = 'waitcancel'
    $canceltimer = TimerInit()
    ElseIf $versionclient > $versionserver Then
    MsgBox(48, 'FEHLER CODE:2', 'Die Version im Client ist neuer als die im Server, das heißt der Upload wurde abgebrochen')
    _FTP_Close($l_InternetSession)
    Exit
    ElseIf $versionclient = $versionclient Then
    $status = 'startserver'
    EndIf
    Case 'waitcancel'
    If $canceltimer > 8000 Then
    $status = 'sync'
    $possible = 0
    EndIf
    Case 'startserver'
    MsgBox(0, 'TEST', 'Das passiert, wenn die versionen übereinstimmen!')
    _FTP_Close($l_InternetSession)
    Exit
    Case 'sync'
    MsgBox(0, 'TEST', 'Hier kommt dann die Synchronisation hin')
    $file = 'serverstate.ini'
    $ziel = @TempDir & '\serverstate.ini'
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    $runninggrusim = IniRead(@TempDir & '\serverstate.ini', 'serverstatus', 'serverrunninggrusim', 'notfound')
    $syncgrusim = IniRead(@TempDir & '\serverstate.ini', 'serverstatus', 'serversyncgrusim', 'notfound')
    GUICtrlSetData($Progress1, 5)
    MsgBox(0, 'Passed', 'Get passed')
    If $runninggrusim = 'notfound' Or $syncgrusim = 'notfound' Then
    MsgBox(48, 'FEHLER', 'ini fehlerhaft: runninggrusim: ' & $runninggrusim & 'syncgrusim: ' & $syncgrusim)
    _FTP_Close($l_InternetSession)
    Exit
    EndIf
    If $runninggrusim = 1 Then
    Switch MsgBox(292, 'WARNUNG', 'Der Server auf dem anderen Computer läuft noch, möchten sie ihn beenden?')
    Case 6
    GUICtrlSetData($Label1, 'Synchronisieren...')
    IniWrite($ziel, 'serverstatus', 'pleaseclosegrusim', 1)
    $succ = _FTP_FilePut($l_FTPSession, $ziel, $file)
    If $succ = 0 Then
    MsgBox(48, 'FEHLER: 3', 'Es ist ein Fehler beim Upload aufgetreten: serverstatus.ini')
    _FTP_Close($l_InternetSession)
    Exit
    EndIf
    While 1
    GUICtrlSetData($Label1, 'Warte auf PC2...')
    Sleep(1000)
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    $runninggrusim = IniRead(@TempDir & '\serverstate.ini', 'serverstatus', 'serverrunninggrusim', 'notfound')
    $syncgrusim = IniRead(@TempDir & '\serverstate.ini', 'serverstatus', 'serversyncgrusim', 'notfound')
    $requestgrusim = IniRead(@TempDir & '\serverstate.ini', 'serverstatus', 'pleaseclosegrusim', 'notfound')
    If $runninggrusim = 'notfound' Or $syncgrusim = 'notfound' Or $requestgrusim = 'notfound' Then
    MsgBox(48, 'FEHLER: 4', 'Ein Fehler ist aufgetreten: serverstate.ini invalid')
    _FTP_Close($l_InternetSession)
    Exit
    EndIf
    If $runninggrusim = 1 And $requestgrusim = 0 Then
    MsgBox(48, 'FEHLER: 5', 'Der andere Nutzer hat das beenden abgelehnt.')
    _FTP_Close($l_FTPSession)
    Exit
    ElseIf $runninggrusim = 0 And $syncgrusim = 0 Then
    Call('Download')
    Call('start')
    EndIf
    WEnd
    Case 7
    MsgBox(64, 'Abbruch durch Nutzer', 'Vorgang abgebrochen')
    _FTP_Close($l_InternetSession)
    Exit
    EndSwitch
    ElseIf $syncgrusim = 1 Then
    MsgBox(64, 'Vorgang abgebrochen', 'Der andere Computer synchronisiert gerade noch, bitte versuchen sie es später erneut')
    _FTP_Close($l_InternetSession)
    Exit
    Else
    MsgBox(0, '', 'Download über Else')
    Call('Download')
    Call('start')
    EndIf
    EndSwitch
    WEnd
    Func Download()
    GUICtrlSetData($Progress1, 10)
    Local $aResult[1]
    Local $sLocal = $folder & '\' ;<======= anpassen Pfad in dem die heruntergeladenen Dateien gespeichert werden
    Local $s_LocalFile
    GUICtrlSetData($Label1, 'Synchronisieren...')
    $copyerror = DirCopy($folder & '\' & $worldname, $folder & '\' & $worldname & '_backup', 1)
    If $copyerror = 0 Then
    $error = MsgBox(36,'FEHLER','CODE: 77 Backup fehlgeschlagen, trotzdem fortsetzen?')
    Select
    Case $error = 7
    _FTP_Close($l_InternetSession)
    Exit
    EndSelect
    EndIf
    $copyerror = DirCopy($folder & '\' & $worldname & '_nether', $folder & '\' & $worldname & '_nether' & '_backup', 1)
    If $copyerror = 0 Then
    $error = MsgBox(36,'FEHLER','CODE: 77 Backup fehlgeschlagen, trotzdem fortsetzen?')
    Select
    Case $error = 7
    _FTP_Close($l_InternetSession)
    Exit
    EndSelect
    EndIf
    $copyerror = DirCopy($folder & '\' & $worldname & '_the_end', $folder & '\' & $worldname & '_the_end' & '_backup', 1)
    If $copyerror = 0 Then
    $error = MsgBox(36,'FEHLER','CODE: 77 Backup fehlgeschlagen, trotzdem fortsetzen?')
    Select
    Case $error = 7
    _FTP_Close($l_InternetSession)
    Exit
    EndSelect
    EndIf
    GUICtrlSetData($Progress1, 10)
    _FTP_FileList_Rekursiv($l_FTPSession, $aResult, '/' & $worldname & '/') ;<======= anpassen Remotepfad der inkl. aller Unerordner heruntergeladen werden soll
    If $aResult[0] > 0 Then
    For $i = 1 To $aResult[0]
    $s_LocalFile = $sLocal & '\' & StringTrimLeft($aResult[$i], 1)
    $s_LocalFile = StringReplace($s_LocalFile, '/', '\')
    _createLocalDirIfNecessary($s_LocalFile)
    ConsoleWrite('Download: ' & $aResult[$i] & @TAB)
    ;#cs
    If _FTP_FileGet($l_FTPSession, $aResult[$i], $s_LocalFile) Then
    ConsoleWrite('erfolgreich ')
    Else
    ConsoleWrite('fehlgeschlagen ' & @error)
    If _FTP_DirSetCurrent($l_FTPSession, $aResult[$i]) Then
    ConsoleWrite(' da ein Mountpoint ')
    EndIf
    EndIf
    ;#ce
    ConsoleWrite(@CRLF)
    Next
    Else
    ConsoleWrite('Keine Dateien zum Herunterladen gefunden' & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    GUICtrlSetData($Progress1, 30)
    _FTP_FileList_Rekursiv($l_FTPSession, $aResult, '/' & $worldname & '_nether/') ;<======= anpassen Remotepfad der inkl. aller Unerordner heruntergeladen werden soll
    If $aResult[0] > 0 Then
    For $i = 1 To $aResult[0]
    $s_LocalFile = $sLocal & '\' & StringTrimLeft($aResult[$i], 1)
    $s_LocalFile = StringReplace($s_LocalFile, '/', '\')
    _createLocalDirIfNecessary($s_LocalFile)
    ConsoleWrite('Download: ' & $aResult[$i] & @TAB)
    ;#cs
    If _FTP_FileGet($l_FTPSession, $aResult[$i], $s_LocalFile) Then
    ConsoleWrite('erfolgreich ')
    Else
    ConsoleWrite('fehlgeschlagen ' & @error)
    If _FTP_DirSetCurrent($l_FTPSession, $aResult[$i]) Then
    ConsoleWrite(' da ein Mountpoint ')
    EndIf
    EndIf
    ;#ce
    ConsoleWrite(@CRLF)
    Next
    Else
    ConsoleWrite('Keine Dateien zum Herunterladen gefunden' & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    GUICtrlSetData($Progress1, 60)
    _FTP_FileList_Rekursiv($l_FTPSession, $aResult, '/' & $worldname & '_the_end/') ;<======= anpassen Remotepfad der inkl. aller Unerordner heruntergeladen werden soll
    If $aResult[0] > 0 Then
    For $i = 1 To $aResult[0]
    $s_LocalFile = $sLocal & '\' & StringTrimLeft($aResult[$i], 1)
    $s_LocalFile = StringReplace($s_LocalFile, '/', '\')
    _createLocalDirIfNecessary($s_LocalFile)
    ConsoleWrite('Download: ' & $aResult[$i] & @TAB)
    ;#cs
    If _FTP_FileGet($l_FTPSession, $aResult[$i], $s_LocalFile) Then
    ConsoleWrite('erfolgreich ')
    Else
    MsgBox(0, 'FEHLER', 'CODE:56 fehlgeschlagen ' & @error)
    If _FTP_DirSetCurrent($l_FTPSession, $aResult[$i]) Then
    MsgBox(0, 'FEHLER', ' da ein Mountpoint ')
    EndIf
    _FTP_Close($l_InternetSession)
    Exit
    EndIf
    ;#ce
    ConsoleWrite(@CRLF)
    Next
    Else
    ConsoleWrite('Keine Dateien zum Herunterladen gefunden' & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 90)
    $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Usersname, $s_Password, $i_Passive)
    $file = 'craftbukkit.jar'
    $ziel = $folder & '\craftbukkit.jar'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 91)
    $file = 'banned-ips.txt'
    $ziel = $folder & '\banned-ips.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 92)
    $file = 'banned-players.txt'
    $ziel = $folder & '\banned.ips.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 93)
    $file = 'bukkit.yml'
    $ziel = $folder & '\bukkit.yml'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 94)
    $file = 'help.yml'
    $ziel = $folder & 'help.yml'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 95)
    $file = 'ops.txt'
    $ziel = $folder & 'ops.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 96)
    $file = 'permissions.yml'
    $ziel = $folder & 'permissions.yml'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel,1)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    $file = 'server.log'
    $ziel = $folder & 'server.log'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 97)
    $file = 'server.properties'
    $ziel = $folder & 'server.properties'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 98)
    $file = 'white-list.txt'
    $ziel = $folder & 'white-list.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf
    $copyerror = ''
    GUICtrlSetData($Progress1, 99)
    MsgBox(0, 'TEST', 'Finnisch mit Anderes')
    Return
    EndFunc ;==>Download

    [/autoit] [autoit][/autoit] [autoit]

    Func start()
    MsgBox(0, 'GO START', 'GO START')
    ;Run($folder & '\
    Exit
    EndFunc ;==>start

    [/autoit]
    • Offizieller Beitrag

    Wie gesagt, lass dir mal die Pfade in der Cosole ausgeben.

    [autoit]

    ConsoleWrite( "Ziel: "&$ziel& @LF)
    ConsoleWrite( "Zielcopy: "&$zielcopy& @LF)

    [/autoit]


    Ich tippe darauf, das mit dem Pfad was nicht stimmt, überprüfe es einfach mal.

  • Ok, erstmal danke, was mich sehr wundert, ist folgendes:

    Code
    Zielcopy: D:\Server\minesync test\minesynctestserver\banned-ips_backup.txt
    Ziel: D:\Server\minesync test\minesynctestserver\banned.ips.txt


    Obwohl im Code folgendes steht:

    Spoiler anzeigen
    [autoit]


    $copyerror = ''
    GUICtrlSetData($Progress1, 91)
    $file = 'banned-ips.txt'
    $ziel = $folder & '\banned-ips.txt'
    $InputSplitted = StringSplit($file, '.')
    $Endung = $InputSplitted[$InputSplitted[0]]
    $Name = StringTrimRight($file, StringLen($InputSplitted[$InputSplitted[0]]) + 1)
    $zielcopy = $folder & '\' & $Name & '_backup' & '.' & $Endung
    ConsoleWrite( "Ziel: "&$ziel& @LF)
    ConsoleWrite( "Zielcopy: "&$zielcopy& @LF)
    $copyerror = FileCopy($ziel, $zielcopy,1)
    If $copyerror = 0 Then
    If Not IsDeclared('copy') Then Local $copy
    $copy = MsgBox(36, 'Fehler', 'CODE: 68 Kopieren von Datei ' & $file & ' fehlgeschlagen (gelöscht?)' & @CRLF & 'Trotzdem fortfahren?')
    Select
    Case $copy = 7
    Exit
    EndSelect
    EndIf
    _FTP_FileGet($l_FTPSession, $file, $ziel)
    If @error Then
    MsgBox(48, 'FEHLER', 'CODE:69 Download von ' & $file & ' fehlgeschlagen')
    Exit
    EndIf

    [/autoit]
    • Offizieller Beitrag

    Ok, erstmal danke, was mich sehr wundert, ist folgendes:

    Code
    Zielcopy: D:\Server\minesync test\minesynctestserver\banned-ips_backup.txt
    Ziel: D:\Server\minesync test\minesynctestserver\banned.ips.txt


    Wie sollte denn der Pfad aussehen? Eventuell hat FileCopy Probleme mit dem Leerzeichen im Pfad.
    Ich nehme mal an dein @Scriptdir ist :\Server\minesync test. Oder etwa nicht?

    • Offizieller Beitrag

    Ich habe keine Ahnung wie es in deienm Verzeichnis aussieht. Überprüfe mal vor dem Kopiern des Files ob die Quelldatei überhaupt existiert.

    [autoit]

    If FileExists($ziel) Then
    ConsoleWrite("Zieldatei existiert"&@crlf)
    Else
    ConsoleWrite("Zieldatei existiert nicht "&@crlf)
    EndIf

    [/autoit]
  • Dankeschön, das wahr sehr aufschlußreich(ich spamme hier gerade meinen ganzen Code zu :D )
    Und zwar:

    Spoiler anzeigen


    Oh man, als ich mal genauer in den Bereich zwischen banned-players.txt und banned-ips.txt reingeschaut hab,
    hab ich einen einfach Tippfehler entdeckt :S
    Danke für die freundliche Hilfe.
    Ich habe vorhin schon wieder 5 Tippfehler entdeckt die mir einfach ganz dreist den gesamten Code zerhauen haben, je größer der Code desto größer die Fehler.
    Danke
    Mfg Fliwatt

    • Offizieller Beitrag

    DebugToConsole und DebuToMsgBox sind die wichtigsten Werkzeuge um Fehler zu finden ;)
    Immer dran denken :thumbup: