Noch Fragen zur Funktion _FileCopy

  • Hallo,
    ich habe folgende Funktion hier entdeckt:

    Func _FileCopy($fromFile,$tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 512
    $winShell = ObjCreate("shell.application")
    $winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)
    EndFunc

    Hierzu habe ich noch Fragen:
    - wie kann ich feststellen ob der Kopiervorgang in Ordnung war ?
    - gibt es irgendwo eine Beschreibung zu den $winShell Funktionen ?

    Danke
    Jürgen Maus

    • Offizieller Beitrag

    Hi!

    FileExists überprüft, ob die Datei überhaupt angekommen ist.
    FileGetSize vergleicht die Dateigröße.
    Mit PlugIns kannst du beide Dateien hashen (MD5, SHA-1) und damit absolut sicher gehen, dass sie identisch sind.

    Kommt ganz auf deine Anwendung an :).

    peethebee

  • Hallo,

    das normale FileCopy nehme ich nicht weil ich dort keine Fortschrittsanzeige erhalte. Ich kopiere den Inhalt eines Verzeichnisses in ein Verzeichnis eines anderen Rechners im Netz. Dieses Zielverzeichnis ist normalerweise leer. Es wird durch ein Programm überwacht, das nach einem bestimmten Zeitablauf prüft ob das Verzeichnis Dateien enthält. Sind Dateien vorhanden werden diese sofort weiterverarbeitet und aus dem Verzeichnis gelöscht. Deshalb kann ich auch mittels FileExists nicht prüfen ob die kopierten Dateien im Zielverzeichnis vorhanden sind. Wenn ich Pech habe hatt die dortige Routine gerade zugeschlagen und die eben kopierten Dateien gelöscht.

    Gruss
    Jürgen

    • Offizieller Beitrag

    Hi,

    den Fortschritt kannst du doch auch manuell programmieren.

    Spoiler anzeigen
    [autoit]

    ;Copy with Progressbar
    #Include <File.au3>

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

    _copyProgress("c:\Downloads\Musik\Hütten Charts 2005\CD 1", "c:\Downloads\AutoIt-Skripte\Entwicklung\ForumTests\Mp3Test")

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

    Func _copyProgress($From_dir, $Dest_dir, $filter = '*.*')
    Local $count = 0
    $FileList = _FileListToArray($From_dir, $filter, 0)
    If (Not IsArray($FileList)) And (@error = 1) Then SetError(-1)
    ProgressOn("Copy", "Files :", "0 files")
    For $i = 1 To UBound($FileList) - 1
    If FileGetAttrib($FileList[$i]) = "D" Then
    If FileCopy($From_dir & "\" & $FileList[$i] & "\*.*", $Dest_dir & "\", 1) Then
    $count += 1
    ProgressSet($count * 100 / $FileList[0], _
    "From: " & $From_dir & "\" & @LF & "To: " & $Dest_dir & "\" & @LF & $FileList[$i], _
    ($count * 100 / $FileList[0]) & " % " & @TAB & $count & "/" & $FileList[0] & " Done")
    EndIf
    ElseIf FileCopy($From_dir & "\" & $FileList[$i], $Dest_dir & "\", 9) Then
    $count += 1
    ProgressSet($count * 100 / $FileList[0], _
    "From: " & $From_dir & "\" & @LF & "To: " & $Dest_dir & "\" & @LF & $FileList[$i], _
    ($count * 100 / $FileList[0]) & " % " & @TAB & $count & "/" & $FileList[0] & " Done")
    EndIf
    Next
    ProgressSet(100, "Done", "Complete")
    Sleep(500)
    ProgressOff()
    Return 1
    EndFunc ;==>_copyProgress

    [/autoit]

    So long,

    Mega

  • Bin est jetzt dazu gekommen mir das Script anzuschauen. Funktioniert prima.
    Vielen Dank.

    Jürgen Maus