Hallo Gemeinde,
ich möchte regelmäßig eine größere Datei(ca. 600MB) von einem Netzlaufwerk auf die Festplatte kopieren.
Dies hatte ich mit folgendem Code versucht:
AutoIt
#RequireAdmin
#include <FileConstants.au3>
#include <Misc.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIEx.au3>
#include <WinAPIDiag.au3>
#include <WinAPIFiles.au3>
#include <APIFilesConstants.au3>
Global $sSourceD = "\\Netzlaufwerk\Test.iso" ; Pfad zur Quell-ISO-Datei
Global $sDestinationP = "C:\Daten\Test.iso" ; Zielordner für das Entpacken
Local $hProgressProc = DllCallbackRegister('_ProgressProc', 'bool', 'uint64;uint64;uint64;uint64;dword;dword;handle;handle;ptr')
ProgressOn('Kopieren', 'Copying...', '0%', -1, -1, BitOR("", $DLG_MOVEABLE))
If Not _WinAPI_MoveFileEx($sSourceD, $sDestinationD, 5, DllCallbackGetPtr($hProgressProc)) Then
_WinAPI_ShowLastError('Error copying ' & $sSourceD)
EndIf
DllCallbackFree($hProgressProc)
ProgressOff()
Func _ProgressProc($iTotalFileSize, $iTotalBytesTransferred, $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $pData)
#forceref $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $pData
Local $iPercent = Round($iTotalBytesTransferred / $iTotalFileSize * 100)
If $iPercent = 100 Then
ProgressSet($iPercent, '', 'Complete')
Sleep(1500)
Else
ProgressSet($iPercent, $iPercent & '%')
EndIf
Sleep(10) ; to slow down to see the progress bar
If _IsPressed('1B') Then ;Abbruch wenn EXC-Taste gedrückt wird
Return $PROGRESS_CANCEL
Else
Return $PROGRESS_CONTINUE
EndIf
EndFunc ;==>_ProgressProc
Alles anzeigen
Leider wird immer eine Fehlermeldung ausgegeben die aussagt: Zugriff verweigert. Zugriff auf das Share existiert. Mit Filecopy würde es funktionieren, da habe ich aber keine Progressbar.
Könnte mir bitte jemand auf die Sprünge helfen was ich da übersehe