Hallo Hugbert,
wo ist das Problem das Script anzupassen, geht doch ganz einfach ProgressSet raus, GuiCtrSetdata rein. Das ganze sieht dann fertig so aus:
Spoiler anzeigen
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <Date.au3>
Global $sSource, $sDest, $bStop
[/autoit] [autoit][/autoit] [autoit]$idfrmMain = GUICreate("DEMO XCOPY zum Kopieren benutzen", 300, 410)
GUICtrlCreateLabel("Quellverzeichnis", 5, 20, 160)
$idbtnSelSource = GUICtrlCreateButton(" &Quelle ändern", 215, 10, 80, 20)
$idedtSource = GUICtrlCreateEdit($sSource, 5, 35, 290, 60, BitOR($ES_MULTILINE, $ES_READONLY))
GUICtrlCreateLabel("Zielverzeichnis", 5, 120, 160)
$idbtnSelDest = GUICtrlCreateButton("&Ziel ändern", 215, 110, 80, 20)
$idedtDest = GUICtrlCreateEdit($sSource, 5, 135, 290, 70, BitOR($ES_MULTILINE, $ES_READONLY))
$idProgress = GUICtrlCreateProgress(5, 230, 290, 25)
$idLblInfo = GUICtrlCreateLabel("", 5, 260, 290, 70, $SS_CENTER)
$idbtnStart = GUICtrlCreateButton("&Start", 215, 340, 80, 25)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $idbtnSelSource
$sSource = FileSelectFolder("Bitte Quellpfad auswählen", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", 1, $sSource, $idfrmMain)
If $sSource <> "" Then
GUICtrlSetData($idedtSource, $sSource)
EndIf
Case $idbtnSelDest
$sDest = FileSelectFolder("Bitte Quellpfad auswählen", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", 1, $sDest, $idfrmMain)
If $sDest <> "" Then
GUICtrlSetData($idedtDest, $sDest)
EndIf
Case $idbtnStart
$bStop = False
GUICtrlSetData($idbtnStart, "&Stop")
CopyWithProgress($sSource, $sDest)
EndSwitch
WEnd
Func CopyWithProgress($srcDir, $destDir) ;Original gigx siehe https://autoit.de/index.php?page…25989#post25989
Local $tsBeginn = _NowCalc(), $tsDiff = -1, $tsRest ;eingefügt für Restdauer
If StringRight($srcDir, 1) = "\" Then $srcDir = StringLeft($srcDir, StringLen($srcDir) - 1)
If StringRight($destDir, 1) <> "\" Then $destDir = $destDir & "\"
If Not FileExists($destDir) Then DirCreate($destDir)
$srcSize = DirGetSize($srcDir, 1)
$1_percent = $srcSize[0] / 100
$pid = Run('XCOPY "' & $srcDir & '" "' & $destDir & '" /D /S /E /V /C /H /R /O /Y /F /G', @TempDir, @SW_HIDE)
While ProcessExists($pid)
If $tsDiff < 0 Then Sleep(100)
$destSize = DirGetSize($destDir, 1)
$tsDiff = _DateDiff("s", $tsBeginn, _NowCalc())
$tsRest = Round($tsDiff / ($destSize[0] / $1_percent) * 100, 0) - $tsDiff
$iPercent = Round($destSize[0] / $1_percent, 0)
ConsoleWrite($tsDiff & " " & $iPercent & " " & $tsRest & @CRLF)
If $iPercent <> GUICtrlRead($idProgress) Then
GUICtrlSetData($idProgress, $iPercent)
GUICtrlSetData($idLblInfo, Round($destSize[0] / (1024 * 1024), 2) & " MB of " & Round($srcSize[0] / (1024 * 1024), 2) & " MB copied" & @CRLF _
& $destSize[1] & " of " & $srcSize[1] & " Files copied." & @CRLF _
& $destSize[2] & " of " & $srcSize[2] & " Folders copied." & @CRLF & $iPercent & "% - Done! " & $tsRest & " sec. remaining")
EndIf
If GUIGetMsg() = $idbtnStart Then
ProcessClose($pid)
$bStop = True
EndIf
WEnd
$tsDiff = _DateDiff("s", $tsBeginn, _NowCalc())
$destSize = DirGetSize($destDir, 1)
If $bStop Then
GUICtrlSetData($idLblInfo, "Abbruch durch Benutzer")
Else
GUICtrlSetData($idLblInfo, Round($destSize[0] / (1024 * 1024), 2) & " MB of " & Round($srcSize[0] / (1024 * 1024), 2) & " MB copied" & @CRLF _
& $destSize[1] & " of " & $srcSize[1] & " Files copied." & @CRLF _
& $destSize[2] & " of " & $srcSize[2] & " Folders copied." & @CRLF & Round($destSize[0] / $1_percent, 2) & "% - Done! " & $tsDiff & " sec. ellapsed")
EndIf
GUICtrlSetData($idbtnStart, "&Start")
EndFunc ;==>CopyWithProgress
#cs
/D:M-T-J Kopiert nur die an oder nach dem Datum geänderten Dateien.
Da kein Datum angegeben, werden nur Dateien kopiert,
die neuer als die bestehenden Zieldateien sind.
/S Kopiert Verzeichnisse und Unterverzeichnisse, die nicht leer sind.
/E Kopiert alle Unterverzeichnisse (leer oder nicht leer).
/V Überprüft jede neue Datei auf Korrektheit.
/C Setzt das Kopieren fort, auch wenn Fehler auftreten.
/H Kopiert auch Dateien mit den Attributen 'Versteckt' und 'System'.
/R Überschreibt schreibgeschützte Dateien. (eventuell entfernen)
/O Kopiert Informationen über den Besitzer und ACL.
/X Kopiert Dateiüberwachungseinstellungen (bedingt /O).
nicht gesetzt evtl. setzen
/Y Unterdrückt die Aufforderung zur Bestätigung, dass eine
vorhandene Zieldatei überschrieben werden soll.
praktisch aber evtl. entfernen, dann darf run aber nicht mit @SW_HIDE gestartet werden,
da sonst ein unsichtbares Fenster auf eine Eingabe wartet
/F Zeigt die Namen der Quell- und Zieldateien beim Kopieren an.
wenn mit @SW_HIDE gestartet unnötig, da Fenster unsichtbar
/G Ermöglicht das Kopieren von verschlüsselten Dateien auf ein
Ziel wo Verschlüsselung nicht unterstützt wird.
#ce
Das Originalscript ist aber nicht von Campweb sondern von gigx siehe https://autoit.de/index.php?page…25989#post25989
mfg autoBert