Progressbar

  • hey Leute,

    ich hab ma ne Frage (google und SuFu wollten mir net so richtig weiter helfen)

    und zwar will ich mehrere Dateien mit einem Autoit script kopieren (funktioniert auch soweit) aber dazu soll ein Statusbalken eingeblendet werden.
    Da ich aber noch nicht sehr viel erfahrung mit autoit hab, weiß ich net wirklich wie ich das bewerkstellingen kann.

    zur Zeit werden dei Dateien erfolgreich kopiert, aber man sieht in keiner weise wie weit es fortgeschritten ist oder wie lang es noch dauert, da es sich um ~600 Mb große Dateien handelt wäre eine anzeige schon sehr hilfreich.

    falls jemand nen Tip hätte wie ich das bewerkstellingen kann wäre ich sehr dankbar!

    MfG Xero

    Einmal editiert, zuletzt von Xero (25. August 2007 um 11:44)

  • schon ma danke für eure Hilfe, da ich aber schon nen (fast) fertiges Srcipt hab, is mir net ganz klar was ich da wie verändern muss.

    mein Script sieht zur Zeit so aus:
    ($Path wird vorher schon festgelegt, is aber auch uninteressant)

    [autoit]


    $pfadvonexe = "Autoplay\Docs_03\erste exe.exe"
    $Pfadzweiteexe = "Autoplay\Docs_03\zweite exe.exe"
    _copy('Autoplay\Docs_03\erste.exe', $path)

    Func _copy($Pfadvonexe, $Path)
    For $i = 65 To 90
    If FileExists(Chr($i) & ':\' & $Pfadvonexe) Then
    FileCopy(Chr($i) & ':\' & $Pfadvonexe, $Path)
    Filecopy(Chr($i) & ':\' & $Pfadzweiteexe, $Path)
    ExitLoop
    EndIf
    Next
    EndFunc

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

    sleep(3000)

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

    Run($Path & "\erste exe.exe")
    exit

    [/autoit]

    wie gesagt, mir is net klar wie ich das ganze ändern muss damit ich nen status balken bekomme :weinen:

    • Offizieller Beitrag

    Hi,

    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

  • vielen dank für das Script, aber da ich noch nen Anfänger bin, bekomm ichs irgentwie net gebacken das ganze in kombination mit dem bestehenden zum laufen zu brigen. :(

    wäre echt super wenn du mir da nochma unter die arme grifen könntest!

  • Hallo,

    probier doch bitte mal das hier:

    [autoit]


    #Include <File.au3>

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

    $pfadvonexe = "Autoplay\Docs_03\erste exe.exe"
    $Pfadzweiteexe = "Autoplay\Docs_03\zweite exe.exe"

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

    _copy('Autoplay\Docs_03\erste.exe', $path)

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

    sleep(3000)

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

    Run($Path & "\erste exe.exe")
    exit

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

    Func _copy($Pfadvonexe, $Path)
    For $i = 65 To 90
    If FileExists(Chr($i) & ':\' & $Pfadvonexe) Then
    _copyProgress(Chr($i) & ':\' & $Pfadvonexe, $Path)
    _copyProgress(Chr($i) & ':\' & $Pfadzweiteexe, $Path)
    ExitLoop
    EndIf
    Next
    EndFunc

    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

    [/autoit]



    Ich habe hier das Script von Xenobiologist genommen, ich weiss nicht ob es so funktioniert wie du es gerne hättest, probiers einfach mal.

    greez

    Edit peethebee: Wenn du statt Code-Tags AutoIt-Tags verwendest, dann wird der Code auch korrekt gehighlighted :).

  • scheint noch net richtig zu gehen, es wird zwar nen fortschrittsfenster angezeigt doch das springt direkt auf 100% und schließt sich dann wieder, es werden aber keine Dateien kopiert.

    hab das ganze auch noch ma ohne den Progressbar teil probiert um zu testen ob die Pfade stimmen, da hats wunderbar funktioniert, der Fehler muss also irgentwe in dem Progressbar teil liegen...

    wäre für weitere Hilfe sehr dankbar!


  • Für mich sieht das so aus, als ob hier nur Zwei dateien kopiert werden (erste exe.exe und zweite exe.exe) Wozu braucht man da einen Fortschrittsbalken? Der Fortschrittsbalken springt nur nach jeder Datei weiter, nicht während dem Kopieren

    Einmal editiert, zuletzt von progandy (1. September 2007 um 14:55)

  • Die zwei Dateien die kopiert werden sollen sind so ca. 600 Mb groß.
    Da die Dateien von einer CD/DVD runter kopiert werden sollen is ne anzeige wie langs noch dauert ganz hilfreich, da man sonst in keinerweise mitbekommt ob die Dateien nun kopiert werden oder nicht, bzw. wie lang man noch warten muss bis man die CD/DVD ausm Laufwerk nehmen kann.