Jump to content
Sign in to follow this  
wraithdu

_LargeFileCopy UDF

Recommended Posts

ok! please find my entire code below! hope that should not make you anger on me :( .. i am slow learner on codding :P

#RequireAdmin
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=database-next.ico
#AutoIt3Wrapper_Res_Comment=Data Restoration Utility
#AutoIt3Wrapper_Res_Description=Data Restoration Utility
#AutoIt3Wrapper_Res_Fileversion=1.0.0.3
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#AutoIt3Wrapper_Res_LegalCopyright=Site Support Team
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
://////=__=
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
#include <TreeViewConstants.au3>
#include "_XMLDomWrapper.au3"
#include "GIFAnimation.au3" ;
#include "GDIpProgress.au3"
#include <GuiRichEdit.au3>
#include <EditConstants.au3>
#include <WinAPI.au3>
#include "Bit.au3"
#include <ComboConstants.au3>
#include"Array.au3"
#include"Pst.au3"
#include<File.au3>
#include <ProgressConstants.au3>
#include"ReduceMemory.au3"
#include <_LargeFileCopy.au3>
#include "RecFileListToArray.au3"
#include "ExtMsgBox.au3"
#include "Marquee.au3"
#include "AD.au3"
Opt('TrayAutoPause', 0)
Global $DocER = 0
Global $Docsel = 0
Global $tri = 0
Global $compname = @ComputerName
Global $SR, $sFQDN
Global $Err_msg = _WinAPI_GetLastErrorMessage()
FileInstall("C:UsersQ03200Desktoptick.jpg", @DesktopDir & "tick.jpg", 1)
FileInstall("C:UsersQ03200Desktoperror.jpg", @DesktopDir & "error.jpg", 1)
FileInstall("C:UsersQ03200Desktopinfo.jpg", @DesktopDir & "info.jpg", 1)
HotKeySet("{F1}", "about")
FileInstall("C:UsersQ03200DesktopLocation.xml", @DesktopDir & "Location.xml", 1)
Global $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)
Global $hItem, $hTreeView
Global $Copy = False
Global $TickFile = @DesktopDir & "tick.jpg"
Global $ErrorFile = @DesktopDir & "error.jpg"
Global $info = @DesktopDir & "info.jpg"
Global $GetpathArray[20]
Global $About, $Aboutitem, $check, $ret
Global $BaseGUI, $Sourcedrive, $ErrorLabel, $DrivePath, $DestDrive, $DestPath, $aArray, $OS, $OSver, $i, $s, $processviewer, $DESK, $FAV, $OFF, $AVA, $CRYPTO, $PSTS, $Others
Global $StartButton, $CancelButton, $msg, $users, $prog, $m, $numberOfChannels, $file, $pst, $hGIF, $Comment, $State, $data, $Destfav, $Sourcefav, $Desktop, $Favorites
Global $DocsAr, $mds, $Sourcedocs, $Destdocs, $SourceTrans, $Trans, $DestTrans, $Mydocs, $Transfer, $iMemo, $Label, $Appdata, $AVAya, $Docs, $md, $SourceDesk, $DestDesk, $mf, $mo
Global $ma, $mc, $mt, $t, $te, $split, $subtime = 0
Global $Title = "Data Copying Utility"
Global $aTSR = _GetTotalScreenResolution()
Global $Log = @ProgramFilesDir & "Enterprise DesktopLogsDRU.log"
Global $iProgress_1, $z = 0
;Global $filedest = "C:TempwaitAnimated.gif"
Global $Net = 0
Global $DRI = 0, $DER = 0
Global $Desktop, $TransDest, $Transource, $TransPercent, $join
;FileInstall("C:UsersQ03200DesktopwaitAnimated.gif", $filedest, 1)



$BaseGUI = GUICreate($Title, 750, 570, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_GROUP, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU))
GUISetBkColor(0xFAFAFA)
$Sourcedrive = GUICtrlCreateLabel("Select the Source Drive", 10, 10, 120, 40)
$ErrorLabel = GUICtrlCreateLabel("", 10, 440, 480, 40)
GUICtrlSetState(-1, $GUI_HIDE)
$DrivePath = GUICtrlCreateCombo("C:", 135, 5, 60, 50, $CBS_DROPDOWNLIST)
$DestDrive = GUICtrlCreateLabel("Data Destination Location", 230, 10, 200, 40)
$DestPath = GUICtrlCreateCombo("C:", 370, 5, 60, 50, $CBS_DROPDOWNLIST)
$aArray = DriveGetDrive("ALL")
$OS = GUICtrlCreateLabel("Select Source OS", 475, 10, 100, 40)
$OSver = GUICtrlCreateCombo("Win 7-64 Bit", 570, 5, 110, 50, $CBS_DROPDOWNLIST)
GUICtrlSetData($OSver, "Win 7-32 Bit")
GUICtrlSetData($OSver, StringUpper("XP"))
If @error Then
; An error occurred when retrieving the drives.
MsgBox(16, $Title & "DriveGetDrive", "Error occured while trying to fetch the drive details.")
Exit
Else
For $i = 1 To $aArray[0] ; Show all the drives found and convert the drive letter to uppercase.
If $aArray[$i] <> "C:" Then
GUICtrlSetData($DrivePath, StringUpper($aArray[$i]))
EndIf
Next
EndIf



$processviewer = GUICtrlCreateGroup("Restore Options", 10, 40, 330, 340)
$Mydocs = GUICtrlCreateCheckbox("My Documents", 160, 70, 100, 40)
$Transfer = GUICtrlCreateCheckbox("All", 30, 70, 100, 40)
$Unckec = GUICtrlCreateCheckbox("UnCheck All", 30, 60, 100, 40)
GUICtrlSetState(-1, $GUI_HIDE)
$DESK = GUICtrlCreateCheckbox("Desktop", 30, 120, 100, 40)
$FAV = GUICtrlCreateCheckbox("Favorites", 30, 170, 100, 40)
$OFF = GUICtrlCreateCheckbox("Office Settings", 30, 220, 100, 40)
$AVA = GUICtrlCreateCheckbox("Avaya", 160, 120, 100, 40)
$CRYPTO = GUICtrlCreateCheckbox("Crypto Soft Token", 160, 170, 120, 40)
$PSTS = GUICtrlCreateCheckbox("PST Files", 160, 220, 100, 40)
$StartButton = GUICtrlCreateButton("Restore", 15, 490, 60, 40)
$CancelButton = GUICtrlCreateButton("Exit", 200, 490, 60, 40)
$Profiles = GUICtrlCreateLabel("Select Optional Folder", 30, 285, 170, 40)
$ProfileBox = GUICtrlCreateCombo("", 160, 280, 160, 40, $CBS_DROPDOWNLIST)
GUICtrlSetState($ProfileBox, $GUI_DISABLE)
$processviewer = GUICtrlCreateGroup("", 360, 40, 370, 340)
GUICtrlSetData($processviewer, "Result Viewer")



;option()
;GUIDelete($hGui)

$iProgress_1 = GUICtrlCreateProgress(370, 500, 240, 20, $PBS_MARQUEE)
GUICtrlSetState($iProgress_1, $GUI_HIDE)
$Label = GUICtrlCreateLabel("", 370, 430, 200, 40)
$hMarquee = _GUICtrlMarquee_Create("Contact " & '"' & "sikaleel@gmail.com" & '" for any suggestion/issues...', 10, 510, 300, 20)
GUICtrlSetState(-1, $GUI_HIDE)
$hMarquee1 = _GUICtrlMarquee_Create("Contact " & '"' & "sikaleel@gmail.com" & '" for any suggestion/issues...', 10, 510, 300, 20)
GUICtrlSetState(-1, $GUI_HIDE)
;_ProgressSetText($iProgress_1, "Checking...")
;_ProgressMarquee($iProgress_1, 2, 0)

_AD_Open()
Global $sFQDN = _AD_SamAccountNameToFQDN($compname & "$")
If Not @error Then
If StringInStr($sFQDN, "OU=NorthAmerica") Then
$SR = "NA"
EndIf
ElseIf @error = 1 Then
_FileWriteLog($Log, "Extended Error" & @error & ">>" & "No record returned from Active Directory")
Else
_FileWriteLog($Log, "Extended Error" & @error)
EndIf
_AD_Close()


GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
_FileWriteLog($Log, "DRU>INFO>Launch>Tool Launched!")


While 1

$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Or $msg = $CancelButton Then

FileDelete(@DesktopDir & "Location.xml")
FileDelete(@DesktopDir & "tick.jpg")
FileDelete(@DesktopDir & "error.jpg")
FileDelete(@DesktopDir & "info.jpg")
_GUICtrlTreeView_Destroy($hTreeView)
_GUICtrlRichEdit_Destroy($iMemo)
_FileWriteLog($Log, "DRU>INFO>Exit>User Selected Exit option. Tool closed successfully!")
Exit
EndIf
If $msg = $GUI_EVENT_PRIMARYDOWN Then
Local $tMPos = _WinAPI_GetMousePos(True, $hTreeView)
Local $tHitTest = _GUICtrlTreeView_HitTestEx($hTreeView, DllStructGetData($tMPos, 1), DllStructGetData($tMPos, 2))
Local $iFlags = DllStructGetData($tHitTest, "Flags")
Select
Case BitAND($iFlags, $TVHT_ONITEMSTATEICON)
Local $hItem = _GUICtrlTreeView_HitTestItem($hTreeView, DllStructGetData($tMPos, 1), DllStructGetData($tMPos, 2))
Local $fChecked = False
If _GUICtrlTreeView_GetChecked($hTreeView, $hItem) Then $fChecked = True
_TvCheckbox($hItem, $fChecked)
; EndSelect
EndSelect
EndIf

If $msg = $DrivePath Then
If GUICtrlRead($DrivePath) <> "" Then
GUICtrlSetState($ProfileBox, $GUI_ENABLE)
GUICtrlSetData($ProfileBox, "")
Local $FileList = _FileListToArray(GUICtrlRead($DrivePath) & "", "*.*", 2)

For $i = 1 To UBound($FileList) - 1
GUICtrlSetData($ProfileBox, $FileList[$i])
Next

Else
GUICtrlSetData($ErrorLabel, "Source directory can not be Blank. Please select the correct drive.")
GUICtrlSetColor($ErrorLabel, 0xff0000)
GUICtrlSetState($ErrorLabel, $GUI_SHOW)
_FileWriteLog($Log, "DRU>Warning>Source Drive Status>User Selected Blank drive - !" & GUICtrlRead($DrivePath))
EndIf
EndIf

If $msg = $ProfileBox Then
profilebox()
EndIf

If $msg = $Transfer Then
GUICtrlSetState($Transfer, $GUI_UNCHECKED)
GUICtrlSetState($Transfer, $GUI_HIDE)
GUICtrlSetState($Unckec, $GUI_SHOW)
GUICtrlSetState($Mydocs, $GUI_CHECKED)
GUICtrlSetState($DESK, $GUI_CHECKED)
GUICtrlSetState($FAV, $GUI_CHECKED)
GUICtrlSetState($AVA, $GUI_CHECKED)
GUICtrlSetState($CRYPTO, $GUI_CHECKED)
GUICtrlSetState($PSTS, $GUI_CHECKED)
GUICtrlSetState($OFF, $GUI_CHECKED)
EndIf

If $msg = $Unckec Then
GUICtrlSetState($Unckec, $GUI_UNCHECKED)
GUICtrlSetState($Unckec, $GUI_HIDE)
GUICtrlSetState($Transfer, $GUI_SHOW)
GUICtrlSetState($Mydocs, $GUI_UNCHECKED)
GUICtrlSetState($DESK, $GUI_UNCHECKED)
GUICtrlSetState($FAV, $GUI_UNCHECKED)
GUICtrlSetState($AVA, $GUI_UNCHECKED)
GUICtrlSetState($CRYPTO, $GUI_UNCHECKED)
GUICtrlSetState($PSTS, $GUI_UNCHECKED)
GUICtrlSetState($OFF, $GUI_UNCHECKED)
EndIf


If $msg = $StartButton Then
process()
;GUICtrlSetState($iProgress_1, $GUI_SHOW)
If $check = 1 Then
_GUICtrlRichEdit_WriteLine($iMemo, "Task has been completed! " & @CRLF, "", "", 0x008000)
GUICtrlSetState($iProgress_1, $GUI_HIDE)
out()
GUISetState(@SW_SHOWNORMAL, $BaseGUI)
GUICtrlSetState($StartButton, $GUI_HIDE)
If $SR = "NA" Then
GUICtrlSetState($hMarquee1, $GUI_SHOW)
Else
GUICtrlSetState($hMarquee, $GUI_SHOW)
EndIf

GUICtrlSetPos($CancelButton, 590, 490, 150, 60)
ElseIf $check = -1 Then
GUICtrlSetState($iProgress_1, $GUI_HIDE)
GUICtrlSetState($hMarquee, $GUI_HIDE)
EndIf
EndIf

WEnd


Func out()
GUICtrlSetState($DrivePath, $GUI_DISABLE)
GUICtrlSetState($DestPath, $GUI_DISABLE)
GUICtrlSetState($Unckec, $GUI_DISABLE)
GUICtrlSetState($ProfileBox, $GUI_DISABLE)
GUICtrlSetState($OSver, $GUI_DISABLE)
If GUICtrlRead($Mydocs) <> 1 Then
GUICtrlSetState($Mydocs, $GUI_DISABLE)
EndIf

If GUICtrlRead($Transfer) <> 1 Then
GUICtrlSetState($Transfer, $GUI_DISABLE)
EndIf

If GUICtrlRead($DESK) <> 1 Then
GUICtrlSetState($DESK, $GUI_DISABLE)
EndIf

If GUICtrlRead($FAV) <> 1 Then
GUICtrlSetState($FAV, $GUI_DISABLE)
EndIf

If GUICtrlRead($OFF) <> 1 Then
GUICtrlSetState($OFF, $GUI_DISABLE)
EndIf

If GUICtrlRead($AVA) <> 1 Then
GUICtrlSetState($AVA, $GUI_DISABLE)
EndIf

If GUICtrlRead($CRYPTO) <> 1 Then
GUICtrlSetState($CRYPTO, $GUI_DISABLE)
EndIf

If GUICtrlRead($PSTS) <> 1 Then
GUICtrlSetState($PSTS, $GUI_DISABLE)
EndIf
EndFunc ;==>out

Func profilebox()
_GUICtrlTreeView_Destroy($hTreeView)
If GUICtrlRead($DrivePath) <> "" Then
GUICtrlSetData($ErrorLabel, "")
GUICtrlSetState($ErrorLabel, $GUI_HIDE)
GUICtrlSetData($processviewer, "Tree Viewer")
_GUICtrlRichEdit_Destroy($iMemo)
$hTreeView = _GUICtrlTreeView_Create($BaseGUI, 370, 70, 340, 300, $iStyle, $WS_EX_CLIENTEDGE)
_GUICtrlTreeView_BeginUpdate($hTreeView)

$aArray = _RecFileListToArray(GUICtrlRead($DrivePath) & "" & GUICtrlRead($ProfileBox))

$hItem = _GUICtrlTreeView_Add($hTreeView, 0, GUICtrlRead($DrivePath) & "" & GUICtrlRead($ProfileBox) & "")
_GUICtrlTreeView_SetState($hTreeView, $hItem, $TVIS_EXPANDED)
For $x = 1 To UBound($aArray) - 1

; For $y = 1 To Random(2, 10, 1)
$So = _GUICtrlTreeView_AddChild($hTreeView, $hItem, $aArray[$x])
$Laray = _RecFileListToArray(GUICtrlRead($DrivePath) & "" & GUICtrlRead($ProfileBox) & "" & $aArray[$x])
For $Y = 1 To UBound($Laray) - 1
$Do = _GUICtrlTreeView_AddChild($hTreeView, $So, $Laray[$Y])
$MArray = _RecFileListToArray(GUICtrlRead($DrivePath) & "" & GUICtrlRead($ProfileBox) & "" & $aArray[$x] & "" & $Laray[$Y])
For $P = 1 To UBound($MArray) - 1
_GUICtrlTreeView_AddChild($hTreeView, $Do, $MArray[$P])
Next

Next
; Next
Next
_GUICtrlTreeView_EndUpdate($hTreeView)
Else
GUICtrlSetData($ErrorLabel, "Source directory can not be Blank. Please select the correct drive.")
GUICtrlSetColor($ErrorLabel, 0xff0000)
GUICtrlSetState($ErrorLabel, $GUI_SHOW)
GUICtrlSetState($Transfer, $GUI_UNCHECKED)
_FileWriteLog($Log, "DRU>Warning>Source Drive Status>User Selected Blank drive - !" & GUICtrlRead($DrivePath))
EndIf



EndFunc ;==>profilebox


Func process()
$a = _GUICtrlTreeView_GetTree($hTreeView)
_FileWriteLog($Log, "DRU>INFO>Process>User Selected Process option")
_check()
If $ret >= 1 Then
If GUICtrlRead($OSver) = "XP" Then
;Foldexist function defined on PST.au3
If Foldexist(GUICtrlRead($DrivePath) & "Drivers") = True Then
$users = "Documents and Settings"
$prog = "Program Files"
$Appdata = "Documents and Settings" & @UserName & "Application DataMicrosoft"
$AVAya = "Documents and Settings" & @UserName & "Application DataAvaya"
$Docs = "Documents and Settings" & @UserName & "My Documents"
$check = 1
Else
MsgBox(48, "OS MisMatch!", "Operating System has been selected wrongly. Please select the appropriate one!")
EndIf
ElseIf GUICtrlRead($OSver) = "Win 7-64 Bit" Then

If Foldexist(GUICtrlRead($DrivePath) & "Program Files (x86)") = True Then
$users = "Users"
$prog = "Program Files (x86)"
$Appdata = "Users" & @UserName & "AppDataRoamingMicrosoft"
$AVAya = "Users" & @UserName & "AppDataRoamingAvaya"
$Docs = "Users" & @UserName & "Documents"
$check = 1
Else
MsgBox(48, "OS MisMatch!", "Operating System has been selected wrongly. Please select the appropriate one!")

EndIf

ElseIf GUICtrlRead($OSver) = "Win 7-32 Bit" Then
If Foldexist(GUICtrlRead($DrivePath) & "Program Files (x86)") = False And Foldexist(GUICtrlRead($DrivePath) & "users") = True Then
$users = "Users"
$prog = "Program Files"
$Appdata = "Users" & @UserName & "AppDataRoamingMicrosoft"
$AVAya = "Users" & @UserName & "AppDataRoamingAvaya"
$Docs = "Users" & @UserName & "Documents"
$check = 1
Else
MsgBox(48, "OS MisMatch!", "Operating System has been selected wrongly. Please select the appropriate one!")
EndIf
EndIf

EndIf
If $check = 1 Then


If ProcessExists("outlook.exe") Then
Do
_ExtMsgBoxSet(2, 0, -1, -1, 9, "Arial")
_ExtMsgBox($MB_ICONEXCLAM, "OK", $Title, "Microsoft Outlook is in Use. Please close Outlook and then click OK to Continue the copying process.")
_ExtMsgBoxSet(Default)
; MsgBox(48, "Open Application", "Outlook is running on this machine. In order restore data now the tool will close the outlook.")
; ;ProcessClose("outlook.exe")
; ;_FileWriteLog($Log, "DRU>Outlook process>PST>Outlook was running on this machine and killed the outlook")
Until ProcessExists("outlook.exe") = 0
EndIf
GUICtrlSetData($ErrorLabel, "")
_GUICtrlTreeView_Destroy($hTreeView)
GUICtrlSetData($processviewer, "Result Viewer")
$iMemo = _GUICtrlRichEdit_Create($BaseGUI, "******************************************************************************" & @CRLF, 370, 70, 340, 300, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_MULTILINE + $ES_READONLY)
_GUICtrlRichEdit_WriteLine($iMemo, "Restoring Data" & @CRLF, "", "", 0x000000)
_GUICtrlRichEdit_WriteLine($iMemo, "******************************************************************************" & @CRLF, "", "", 0x000000)
GUICtrlSetState($iProgress_1, $GUI_SHOW)
GUICtrlSendMsg($iProgress_1, $PBM_SETMARQUEE, True, 50)

If GUICtrlRead($Mydocs) = "1" Then
_GUICtrlRichEdit_WriteLine($iMemo, "Started copying MY Documents folder " & @CRLF, "", "", 0xFE2EF7)
$DocsAr = _RecFileListToArray(GUICtrlRead($DrivePath) & $Docs & "", "*", 0, 1, 1)

If IsArray($DocsAr) Then

_GUICtrlRichEdit_WriteLine($iMemo, UBound($DocsAr) & " Files to be copied. Please wait... " & @CRLF, "", "", 0xFE2EF7)


For $i = 0 To UBound($DocsAr) - 1
_FileWriteLog($Log, "DRU>INFO>DOCS>Source location>" & GUICtrlRead($DrivePath) & $Docs & "" & $DocsAr[$i])
_FileWriteLog($Log, "DRU>INFO>DOCS>Destination location>" & "C:Users" & @UserName & "Documents" & "" & $DocsAr[$i])
; If StringInStr($DocsAr[$i], ".") <> 0 Then
$mds = _LargeFileCopy(GUICtrlRead($DrivePath) & $Docs & "" & $DocsAr[$i], "C:Users" & @UserName & "Documents" & "" & $DocsAr[$i], BitOR(1, 2, 8))
If $mds = 1 Then
_FileWriteLog($Log, "DRU>INFO>DESKTOP - File Copy> copied the file - " & $DocsAr[$i])
$DRI = $DRI + 1
ElseIf $mds <> 1 Then
_FileWriteLog($Log, "DRU>ERROR>DESKTOP - File Copy>Failed to copy the file - >" & $DocsAr[$i] & " Error value = " & @error)
If @error = 1 Then
_FileWriteLog($Log, "DRU>WARNING>DESKTOP - File Copy>Failed to copy the file - >Failed to open source file, or source was a directory")
ElseIf @error = 2 Then
_FileWriteLog($Log, "DRU>WARNING>DESKTOP - File Copy>Failed to copy the file - >Destination file exists and overwrite flag not set")
ElseIf @error = 3 Then
_FileWriteLog($Log, "DRU>WARNING>DESKTOP - File Copy>Failed to copy the file - >Failed to create destination file")
$DER = $DER + 1
ElseIf @error = 4 Then
_FileWriteLog($Log, "DRU>WARNING>DESKTOP - File Copy>Failed to copy the file - >Read error during copy")
$DER = $DER + 1
ElseIf @error = 5 Then
_FileWriteLog($Log, "DRU>WARNING>DESKTOP - File Copy>Failed to copy the file - >Write error during copy")
$DER = $DER + 1
ElseIf @error = 6 Then
_FileWriteLog($Log, "DRU>WARNING>DESKTOP - File Copy>Failed to copy the file - >Verify failed")
$DER = $DER + 1
EndIf
EndIf

; Else
; _FileWriteLog($Log, "DRU>INFO>MY Docs>" & "Not in to the copy loop" & $DocsAr[$i])
; EndIf
Next
GUICtrlSetState($Mydocs, $GUI_HIDE)
$Sourcedocs = DirGetSize(GUICtrlRead($DrivePath) & $Docs)
$Destdocs = DirGetSize("C:Users" & @UserName & "Documents")
If Round($Destdocs / 1024 / 1024) = Round($Sourcedocs / 1024 / 1024) Then
_GUICtrlRichEdit_WriteLine($iMemo, "Documents Folder copied successfully " & @CRLF, "", "", 0x008000)
_FileWriteLog($Log, "DRU>INFO>DOCS>Documents folder copied successfully!")
GUICtrlCreatePic($TickFile, 160, 70, 16, 16)
GUICtrlCreateLabel("My Documents", 180, 70, 100, 30)
;MsgBox(0,"SIZE","Destination Size = " & Round($Destdocs / 1024 / 1024) &@CRLF&@CRLF&@CRLF&@CRLF& "Source Size = "& Round($Sourcedocs / 1024 / 1024))
; ElseIf $DER >= 1 Then
; _GUICtrlRichEdit_WriteLine($iMemo, "Some Files are not copied properly. Please copy it manually " & @CRLF, "", "", 0xCDA30C)
; _FileWriteLog($Log, "DRU>INFO>DOCS>Some files are not copied properly!")
ElseIf Round($Destdocs / 1024 / 1024) <> Round($Sourcedocs / 1024 / 1024) Then
GUICtrlCreatePic($ErrorFile, 160, 70, 16, 16)
GUICtrlCreateLabel("My Documents", 180, 70, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, "Some Files are not copied properly. Please copy it manually! Also please send the log file to the tool Admin" & @CRLF, "", "", 0xFF0000)
_FileWriteLog($Log, "DRU>Error>DOCS>unable to copy MY Documents folder. Source Size = " & Round($Sourcedocs / 1024 / 1024) & ". Destination size = " & Round($Destdocs / 1024 / 1024) & ". Value of DER = " & $DER)
;MsgBox(0, "SIZE", "Destination Size = " & Round($Destdocs / 1024 / 1024) & @CRLF & @CRLF & @CRLF & @CRLF & "Source Size = " & Round($Sourcedocs / 1024 / 1024))

EndIf


Else
GUICtrlSetState($Mydocs, $GUI_HIDE)
GUICtrlCreatePic($TickFile, 160, 70, 16, 16)
GUICtrlCreateLabel("My Documents", 180, 70, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, UBound($DocsAr) & " Files to be copied!" & @CRLF, "", "", 0x2E2EFE)
_FileWriteLog($Log, "DRU>Error>DOCS>Variable Documents does not return array value")

EndIf
$DER = 0
$DRI = 0
Else
_FileWriteLog($Log, "DRU>INFO>DOCS> My Documents is not selected -->" & GUICtrlRead($Mydocs))
EndIf

If GUICtrlRead($DESK) = "1" Then
_GUICtrlRichEdit_WriteLine($iMemo, "Started copying Desktop folder " & @CRLF, "", "", 0xFE2EF7)
; $Dessel = 1
$Desktop = _RecFileListToArray(GUICtrlRead($DrivePath) & $users & @UserName & "Desktop" & "", "*", 0, 1, 1)
If IsArray($Desktop) Then
_GUICtrlRichEdit_WriteLine($iMemo, UBound($Desktop) & " Files to be copied. Please wait... " & @CRLF, "", "", 0xFE2EF7)
;$md = DirCopy(GUICtrlRead($DrivePath) & $users & @UserName & $Comment[1], "C:users" & @UserName & $Comment[1], 1)
For $i = 0 To UBound($Desktop) - 1
_FileWriteLog($Log, "DRU>INFO>DESKTOP>Source location>" & GUICtrlRead($DrivePath) & $users & @UserName & "Desktop" & $Desktop[$i])
_FileWriteLog($Log, "DRU>INFO>DESKTOP>Destination location>" & @DesktopDir & "" & $Desktop[$i])
; If StringInStr($Desktop[$i], ".") <> 0 Then
$md = _LargeFileCopy(GUICtrlRead($DrivePath) & $users & @UserName & "Desktop" & $Desktop[$i], @DesktopDir & "" & $Desktop[$i], BitOR(1, 2, 8))
If $md = 1 Then
_FileWriteLog($Log, "DRU>INFO>DESKTOP - File Copy> copied the file - " & $Desktop[$i])
$DRI = $DRI + 1
ElseIf $md <> 1 Then
_FileWriteLog($Log, "DRU>ERROR>DESKTOP - File Copy>Failed to copy the file - >" & $Desktop[$i] & " Error value = " & @error)
$DER = $DER + 1
EndIf
; Else
; _FileWriteLog($Log, "DRU>INFO>Desktop>" & "Not in to the copy loop" & $Desktop[$i])
; EndIf
Next
GUICtrlSetState($DESK, $GUI_HIDE)
$SourceDesk = DirGetSize(GUICtrlRead($DrivePath) & $users & @UserName & "Desktop")
$DestDesk = DirGetSize(@DesktopDir)
If Round($DestDesk / 1024 / 1024) = Round($SourceDesk / 1024 / 1024) Then
_GUICtrlRichEdit_WriteLine($iMemo, "Desktop Folder copied successfully " & @CRLF, "", "", 0x008000)
_FileWriteLog($Log, "DRU>INFO>Desktop>Desktop folder copied successfully!")
GUICtrlCreatePic($TickFile, 30, 120, 16, 16)
GUICtrlCreateLabel("Desktop", 50, 120, 100, 40)
;ElseIf $DER >= 1 Then
; _GUICtrlRichEdit_WriteLine($iMemo, "Some Files are not copied properly. Please copy it manually " & @CRLF, "", "", 0xCDA30C)
; _FileWriteLog($Log, "DRU>INFO>Desktop>Some files are not copied properly!")
ElseIf Round($DestDesk / 1024 / 1024) <> Round($SourceDesk / 1024 / 1024) Then
GUICtrlCreatePic($ErrorFile, 30, 120, 16, 16)
GUICtrlCreateLabel("Desktop", 50, 120, 100, 40)
_GUICtrlRichEdit_WriteLine($iMemo, "Some Files are not copied properly. Please copy it manually! Also please send the log file to the tool Admin" & @CRLF, "", "", 0xFF0000)
_FileWriteLog($Log, "DRU>Error>Desktop>unable to copy Desktop folder. Source Desk Size = " & Round($SourceDesk / 1024 / 1024) & ". Destination size = " & Round($DestDesk / 1024 / 1024) & ". Value of DER = " & $DER)
EndIf
Else
GUICtrlSetState($DESK, $GUI_HIDE)
GUICtrlCreatePic($TickFile, 30, 120, 16, 16)
GUICtrlCreateLabel("Desktop", 50, 120, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, UBound($Desktop) & " Files to be copied!" & @CRLF, "", "", 0x2E2EFE)
_FileWriteLog($Log, "DRU>Error>Desktop>Variable Desktop does not return array value")
EndIf


$DER = 0
$DRI = 0
Else
_FileWriteLog($Log, "DRU>INFO>DESKTOP> Desktop is not selected -->" & GUICtrlRead($DESK))
EndIf

If GUICtrlRead($FAV) = "1" Then

$Favorites = _RecFileListToArray(GUICtrlRead($DrivePath) & $users & @UserName & "Favorites" & "", "*", 0, 1, 1)

If IsArray($Favorites) Then
_GUICtrlRichEdit_WriteLine($iMemo, UBound($Favorites) & " links to be copied. Please wait... " & @CRLF, "", "", 0xFE2EF7)

For $i = 0 To UBound($Favorites) - 1
$t = 0
$te = 0
_FileWriteLog($Log, "DRU>INFO>FAV>Source location - " & GUICtrlRead($DrivePath) & $users & @UserName & "Favorites" & $Favorites[$i])
_FileWriteLog($Log, "DRU>INFO>FAV>Destination location - " & "C:users" & @UserName & "Favorites" & $Favorites[$i])
;$mf = DirCopy(GUICtrlRead($DrivePath) & $users & @UserName & $Comment[1], "C:users" & @UserName & $Comment[1], 1)
; If StringInStr($Favorites[$i], ".") <> 0 Then
$t = TimerInit()
$mf = _LargeFileCopy(GUICtrlRead($DrivePath) & $users & @UserName & "Favorites" & $Favorites[$i], @FavoritesDir & "" & $Favorites[$i], BitOR(1, 2, 8))
$te = TimerDiff($t)
If $mf = 1 Then
_FileWriteLog($Log, "DRU>INFO>FAV - File Copy> copied the file - " & $Favorites[$i])
$subtime = $subtime + ($te / 1000)
$DRI = $DRI + 1
ElseIf $mf <> 1 And StringInStr($Favorites[$i], ".") <> 0 Then
_FileWriteLog($Log, "DRU>ERROR>FAV - File Copy>Failed to copy the file - >" & $Favorites[$i] & " Error value = " & $mf)
$DER = $DER + 1
EndIf
; Else
; _FileWriteLog($Log, "DRU>WARNING>Favorites>" & "Not in to the copy loop" & $Favorites[$i])
; EndIf

Next
GUICtrlSetState($FAV, $GUI_HIDE)
$Sourcefav = DirGetSize(GUICtrlRead($DrivePath) & $users & @UserName & "Favorites")
$Destfav = DirGetSize(@FavoritesDir)
If Round($Destfav / 1024 / 1024) = Round($Sourcefav / 1024 / 1024) Then
GUICtrlCreatePic($TickFile, 30, 170, 16, 16)
GUICtrlCreateLabel("Favorites", 50, 170, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, "Favorites Folder copied successfully " & @CRLF, "", "", 0x008000)
_FileWriteLog($Log, "DRU>INFO>FAV>FAV folder copied successfully!")
; ElseIf $DER >= 1 Then
; _GUICtrlRichEdit_WriteLine($iMemo, "Some Files are not copied properly. Please copy it manually " & @CRLF, "", "", 0xCDA30C)
; _FileWriteLog($Log, "DRU>INFO>FAV>Some files are not copied properly!")
ElseIf Round($Destfav / 1024 / 1024) <> Round($Sourcefav / 1024 / 1024) And $DER = 0 Then
GUICtrlCreatePic($ErrorFile, 30, 180, 16, 16)
GUICtrlCreateLabel("Favorites", 50, 180, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, "Some Files are not copied properly. Please copy it manually! Also please send the log file to the tool Admin." & @CRLF, "", "", 0xFF0000)
_FileWriteLog($Log, "DRU>Error>FAV>unable to copy FAV folder. Source Size = " & Round($Sourcefav / 1024 / 1024) & ". Destination size = " & Round($Destfav / 1024 / 1024) & ". Value of DER = " & $DER)
EndIf
Else
GUICtrlSetState($FAV, $GUI_HIDE)
GUICtrlCreatePic($TickFile, 30, 180, 16, 16)
GUICtrlCreateLabel("Favorites", 50, 180, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, UBound($Favorites) & " Files to be copied!" & @CRLF, "", "", 0x2E2EFE)
_FileWriteLog($Log, "DRU>Error>FAV>Variable FAV does not return array value")
EndIf

$DER = 0
$DRI = 0
_FileWriteLog($Log, "DRU>INFO>Time for Copying> copied the Favorites folder in " & $subtime & " Seconds")
Else
_FileWriteLog($Log, "DRU>INFO>FAV> Favorite is not selected -->" & GUICtrlRead($FAV))
EndIf
If GUICtrlRead($OFF) = "1" Then
_GUICtrlRichEdit_WriteLine($iMemo, "Started copying Office folder " & @CRLF, "", "", 0xFE2EF7)
$file = _XMLFileOpen(@DesktopDir & "Location.xml")
$numberOfChannels = _XMLGetNodeCount("/root/off")
For $s = 1 To $numberOfChannels Step +1
$Comment = _XMLGetChildText("/root/off[" & $s & "]")
_ReduceMemory()
$mo = DirCopy(GUICtrlRead($DrivePath) & $Appdata & $Comment[1], "C:users" & @UserName & "AppDataRoamingMicrosoft" & $Comment[1], 1)
_FileWriteLog($Log, "DRU>INFO>OFF>Source location - " & GUICtrlRead($DrivePath) & $Appdata & $Comment[1])
_FileWriteLog($Log, "DRU>INFO>OFF>Destination location - " & "C:users" & @UserName & "AppDataRoamingMicrosoft" & $Comment[1])
GUICtrlSetState($OFF, $GUI_HIDE)
If $mo = 1 Then
_GUICtrlRichEdit_WriteLine($iMemo, "Office Folder copied successfully " & $Comment & @CRLF, "", "", 0x008000)
_FileWriteLog($Log, "DRU>INFO>OFF>Office files Folder copied successfully - " & $Comment[1])
GUICtrlCreatePic($TickFile, 30, 220, 16, 16)
GUICtrlCreateLabel("Office Settings", 50, 220, 100, 30)
Else
_GUICtrlRichEdit_WriteLine($iMemo, "Unable to copy Office folder. Error - " & @error & $Comment & @CRLF, "", "", 0xFF0000)
_FileWriteLog($Log, "DRU>Error>OFF>unable to copy Office files folder - " & $Comment[1])
GUICtrlCreatePic($ErrorFile, 30, 220, 16, 16)
GUICtrlCreateLabel("Office Settings", 50, 220, 100, 30)
EndIf
Next
Else
_FileWriteLog($Log, "DRU>INFO>OFF> Office setting is not selected -->" & GUICtrlRead($OFF))
EndIf

If GUICtrlRead($AVA) = "1" Then
_GUICtrlRichEdit_WriteLine($iMemo, "Started copying Avaya folder " & @CRLF, "", "", 0xFE2EF7)
_FileWriteLog($Log, "DRU>INFO>Avaya>Started copying the Avaya folder")
$file = _XMLFileOpen(@DesktopDir & "Location.xml")
$numberOfChannels = _XMLGetNodeCount("/root/avaya")
For $s = 1 To $numberOfChannels Step +1
$Comment = _XMLGetChildText("/root/avaya[" & $s & "]")
_ReduceMemory()
$ma = DirCopy(GUICtrlRead($DrivePath) & $AVAya & $Comment[1], "C:users" & @UserName & "AppDataRoamingAvaya" & $Comment[1], 1)
_FileWriteLog($Log, "DRU>INFO>Avaya>Source location - " & GUICtrlRead($DrivePath) & $AVAya & $Comment[1])
_FileWriteLog($Log, "DRU>INFO>Avaya>Destination location - " & "C:users" & @UserName & "AppDataRoamingAvaya" & $Comment[1])
Next
GUICtrlSetState($AVA, $GUI_HIDE)
If $ma = 1 Then
GUICtrlCreatePic($TickFile, 160, 120, 16, 16)
GUICtrlCreateLabel("Avaya", 180, 120, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, "Avaya Folder copied successfully " & $Comment & @CRLF, "", "", 0x008000)
_FileWriteLog($Log, "DRU>INFO>Avaya>Avaya Folder copied successfully ")
Else
GUICtrlCreatePic($ErrorFile, 160, 120, 16, 16)
GUICtrlCreateLabel("Avaya", 180, 120, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, "Unable to copy Avaya folder. Error - " & @error & $Comment & @CRLF, "", "", 0xFF0000)
_FileWriteLog($Log, "DRU>Error>Avaya>unable to copy Avaya folder. Error Value= " & @error)
EndIf
Else
_FileWriteLog($Log, "DRU>INFO>Avaya> Avaya is not selected -->" & GUICtrlRead($AVA))
EndIf

If GUICtrlRead($CRYPTO) = "1" Then
_GUICtrlRichEdit_WriteLine($iMemo, "Started copying Crypto folder " & @CRLF, "", "", 0xFE2EF7)
_FileWriteLog($Log, "DRU>INFO>CRYPTO>Started copying the Crypto folder")
$file = _XMLFileOpen(@DesktopDir & "Location.xml")
$numberOfChannels = _XMLGetNodeCount("/root/cryp")
For $s = 1 To $numberOfChannels Step +1
$Comment = _XMLGetChildText("/root/cryp[" & $s & "]")
_ReduceMemory()
_FileWriteLog($Log, "DRU>INFO>Crypto>Source location - " & GUICtrlRead($DrivePath) & $prog & $Comment[1])
_FileWriteLog($Log, "DRU>INFO>Crypto>Destination location - " & @ProgramFilesDir & "" & $Comment[1])

$mc = DirCopy(GUICtrlRead($DrivePath) & $prog & $Comment[1], @ProgramFilesDir & "" & $Comment[1], 1)
GUICtrlSetState($CRYPTO, $GUI_HIDE)
If $mc = 1 Then
GUICtrlCreatePic($TickFile, 160, 170, 16, 16)
GUICtrlCreateLabel("Crypto Soft Token", 180, 170, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, "Crypto Folder copied successfully " & @CRLF, "", "", 0x008000)
_FileWriteLog($Log, "DRU>INFO>Crypto>Crypto folder copied successfully")
Else
GUICtrlCreatePic($ErrorFile, 160, 170, 16, 16)
GUICtrlCreateLabel("Crypto Soft Token", 180, 170, 100, 30)
_GUICtrlRichEdit_WriteLine($iMemo, "Unable to copy Crypto folder. Error - " & @error & $Comment & @CRLF, "", "", 0xFF0000)
_FileWriteLog($Log, "DRU>Error>Crypto>unable to copy Crypto folder")
EndIf
Next

Else
_FileWriteLog($Log, "DRU>INFO>CRYPTO> CRYPTO is not selected -->" & GUICtrlRead($CRYPTO))
EndIf

If GUICtrlRead($PSTS) = "1" Then

_GUICtrlRichEdit_WriteLine($iMemo, "Searching for PST file. Please wait.... " & @CRLF, "", "", 0x0000FF)
$pst = _RecFileListToArray(GUICtrlRead($DrivePath), "*.pst", 1, 1)
_FileWriteLog($Log, "DRU>INFO>PST>Started copying PST Files")
_GUICtrlRichEdit_WriteLine($iMemo, UBound($pst) & " PST files need to be copied! " & @CRLF, "", "", 0xFE2EF7)

If IsArray($pst) Then
For $i = 0 To UBound($pst) - 1
$t = 0
$te = 0
If StringInStr($pst[$i], ".") <> 0 Then
_FileWriteLog($Log, "DRU>INFO>PST>Source location - " & GUICtrlRead($DrivePath) & "" & $pst[$i])
$t = TimerInit()
; If StringInStr($pst[$i], "Local SettingsApplication DataMicrosoftOutlook") <> 0 Or StringInStr($pst[$i], "AppDataLocalMicrosoftOutlook") <> 0 Then
; $split = StringSplit($pst[$i], "")
; $m = _LargeFileCopy(GUICtrlRead($DrivePath) & "" & $pst[$i], "C:users" & @UserName & "AppDataLocalMicrosoftOutlook" & $split[UBound($split) - 1], BitOR(1, 2, 8))
; $te = TimerDiff($t)
; Else
; $t = TimerInit()
$m = _LargeFileCopy(GUICtrlRead($DrivePath) & "" & $pst[$i], "C:" & $pst[$i], BitOR(1, 2, 8))
$te = TimerDiff($t)
; EndIf

If $m = 1 Then
_FileWriteLog($Log, "DRU>INFO>PST - File Copy> copied the file - " & $pst[$i])
_FileWriteLog($Log, "DRU>INFO>Time for Copying> copied the file - " & $pst[$i] & " in " & $te / 1000 & " Seconds")
$DRI = $DRI + 1
ElseIf $m <> 1 And StringInStr($pst[$i], ".") <> 0 Then
_FileWriteLog($Log, "DRU>ERROR>PST - File Copy>Failed to copy the file - >" & $pst[$i] & " Error value = " & $m)
$DER = $DER + 1
EndIf
Else
_FileWriteLog($Log, "DRU>INFO>Favorites>" & "Not in to the copy loop" & $pst[$i])
EndIf
Next
Else
_FileWriteLog($Log, "DRU>Error>PST>Variable PST does not return array value")
EndIf
GUICtrlSetState($PSTS, $GUI_HIDE)
GUICtrlCreatePic($TickFile, 160, 220, 16, 16)
GUICtrlCreateLabel("PST Files", 180, 220, 100, 30)
Else
_FileWriteLog($Log, "DRU>INFO>PST> PST is not selected -->" & GUICtrlRead($PSTS))
EndIf

If GUICtrlRead($ProfileBox) <> "" Then
_GUICtrlRichEdit_WriteLine($iMemo, "Collecting Others folder details. Please wait.... " & @CRLF, "", "", 0x0000FF)
If IsArray($GetpathArray) Then
For $ta = 0 To UBound($GetpathArray) - 1
If $GetpathArray[$ta] <> "" Then

$Trans = _RecFileListToArray($GetpathArray[$ta] & "", "*", 0, 1, 1)
If IsArray($Trans) Then
_GUICtrlRichEdit_WriteLine($iMemo, UBound($Trans) & " Files to be copied. Please wait... " & @CRLF, "", "", 0xFE2EF7)
For $i = 0 To UBound($Trans) - 1
_FileWriteLog($Log, "DRU>INFO>Transfer>Source location>" & $GetpathArray[$ta] & "" & $Trans[$i])
_FileWriteLog($Log, "DRU>INFO>Transfer>Destination location>" & "C:" & $Trans[$i])
; If StringInStr($Desktop[$i], ".") <> 0 Then

$md = _LargeFileCopy($GetpathArray[$ta] & $Trans[$i], "C" & StringTrimLeft($GetpathArray[$ta], 1) & "" & $Trans[$i], BitOR(1, 2, 8))
If $md = 1 Then
_FileWriteLog($Log, "DRU>INFO>Transfer - File Copy> copied the file - " & $Trans[$i])
$DRI = $DRI + 1
ElseIf $md <> 1 Then
_FileWriteLog($Log, "DRU>ERROR>Transfer - File Copy>Failed to copy the file - >" & $Trans[$i] & " Error value = " & @error)
$DER = $DER + 1
EndIf
; Else
; _FileWriteLog($Log, "DRU>INFO>Desktop>" & "Not in to the copy loop" & $Desktop[$i])
; EndIf
Next

Else
_GUICtrlRichEdit_WriteLine($iMemo, UBound($Desktop) & " Files to be copied!" & @CRLF, "", "", 0x2E2EFE)
_FileWriteLog($Log, "DRU>Error>Transfer>Variable Desktop does not return array value")
EndIf
EndIf
Next
Else
_FileWriteLog($Log, "DRU>Error>Transfer>Variable Desktop does not return array value")
EndIf
Else
_FileWriteLog($Log, "DRU>INFO>Profile> ProfileBox is not selected -->" & GUICtrlRead($ProfileBox))
EndIf
Else
GUICtrlSetState($iProgress_1, $GUI_HIDE)
EndIf

EndFunc ;==>process

Func _check()

If DriveGetType(GUICtrlRead($DrivePath)) <> "Fixed" And $msg = $StartButton Then
;MsgBox(48,"Source Drive Warning!","Source directory can not be a Network drive. Please select the correct drive.")
GUICtrlSetData($ErrorLabel, "Source directory can not be a Network/Optical drive. Please select the correct drive.")
GUICtrlSetColor($ErrorLabel, 0xff0000)
GUICtrlSetState($ErrorLabel, $GUI_SHOW)
_FileWriteLog($Log, "DRU>Warning>Source Drive Status>User Selected Network/Optical drive - !" & GUICtrlRead($DrivePath))
ElseIf (GUICtrlRead($DrivePath)) = "" And $msg = $StartButton Then
GUICtrlSetData($ErrorLabel, "Source directory can not be Blank. Please select the correct drive.")
GUICtrlSetColor($ErrorLabel, 0xff0000)
GUICtrlSetState($ErrorLabel, $GUI_SHOW)
_FileWriteLog($Log, "DRU>Warning>Source Drive Status>User Selected Blank drive - !" & GUICtrlRead($DrivePath))
Else
GUICtrlSetData($ErrorLabel, "")

If GUICtrlRead($ProfileBox) = "" And GUICtrlRead($DESK) <> 1 And GUICtrlRead($FAV) <> 1 And GUICtrlRead($OFF) <> 1 And GUICtrlRead($AVA) <> 1 And GUICtrlRead($CRYPTO) <> 1 And GUICtrlRead($PSTS) <> 1 And GUICtrlRead($Others) <> 1 And GUICtrlRead($Transfer) <> 1 And GUICtrlRead($Mydocs) <> 1 Then
MsgBox(48, "Restor Option Warning!", "Atleast one option should be selected in Restore option")
GUICtrlSetState($iProgress_1, $GUI_HIDE)
_FileWriteLog($Log, "DRU>Warning>Options>Atleast one option should be selected - !")
Else
$ret = 1
EndIf
EndIf
EndFunc ;==>_check



Func _GUICtrlRichEdit_WriteLine($hWnd, $sText, $iIncrement = 0, $sAttrib = "", $iColor = -1)

; Count the @CRLFs
StringReplace(_GUICtrlRichEdit_GetText($hWnd, True), @CRLF, "")
Local $iLines = @extended
; Adjust the text char count to account for the @CRLFs
Local $iEndPoint = _GUICtrlRichEdit_GetTextLength($hWnd, True, True) - $iLines
; Add new text
_GUICtrlRichEdit_AppendText($hWnd, $sText & @CRLF)
; Select text between old and new end points
_GUICtrlRichEdit_SetSel($hWnd, $iEndPoint, -1)
; Convert colour from RGB to BGR
$iColor = Hex($iColor, 6)
$iColor = '0x' & StringMid($iColor, 5, 2) & StringMid($iColor, 3, 2) & StringMid($iColor, 1, 2)
; Set colour
If $iColor <> -1 Then _GUICtrlRichEdit_SetCharColor($hWnd, $iColor)
; Set size
If $iIncrement <> 0 Then _GUICtrlRichEdit_ChangeFontSize($hWnd, $iIncrement)
; Set weight
If $sAttrib <> "" Then _GUICtrlRichEdit_SetCharAttributes($hWnd, $sAttrib)
; Clear selection
_GUICtrlRichEdit_Deselect($hWnd)

EndFunc ;==>_GUICtrlRichEdit_WriteLine

Func _TvCheckbox($hTvItem, $fTvCheck)
;-------------- Going up the tree -----------------------------------
_TvCheckboxParent($hTvItem, $fTvCheck)

;-------------- Going down the tree -----------------------------------
_TvCheckboxChild($hTvItem, $fTvCheck)

;-------------- Loopping to the function to get the detail of selected tree -----------------------------------
_TvGetpath($hTvItem, $fTvCheck)
EndFunc ;==>_TvCheckbox

Func _TvCheckboxChild($hTvItem, $fTvCheck)
Local $hFirst, $hNext
$hFirst = _GUICtrlTreeView_GetFirstChild($hTreeView, $hTvItem)
If $hFirst Then
$hNext = $hFirst
While $hNext
_GUICtrlTreeView_SetChecked($hTreeView, $hNext, $fTvCheck)
If _GUICtrlTreeView_GetFirstChild($hTreeView, $hNext) Then
_TvCheckboxChild($hNext, $fTvCheck)
EndIf
$hNext = _GUICtrlTreeView_GetNextSibling($hTreeView, $hNext)
WEnd
EndIf
EndFunc ;==>_TvCheckboxChild

Func _TvCheckboxParent($hTvItem, $fTvCheck)
Local $hFirst, $hNext, $bCheckedFlag

If $fTvCheck Then
$hTvParent = _GUICtrlTreeView_GetParentHandle($hTreeView, $hTvItem)
If $hTvParent = 0 Then
_GUICtrlTreeView_SetChecked($hTreeView, $hTvItem, $fTvCheck)
Else
$hFirst = _GUICtrlTreeView_GetParentHandle($hTreeView, $hTvItem)
If $hFirst Then
$hNext = $hFirst
_GUICtrlTreeView_SetChecked($hTreeView, $hNext, $fTvCheck)
If _GUICtrlTreeView_GetParentHandle($hTreeView, $hNext) Then
_TvCheckboxParent($hNext, $fTvCheck)
EndIf
EndIf
EndIf
Else
$hTvParent = _GUICtrlTreeView_GetParentHandle($hTreeView, $hTvItem)
If $hTvParent = 0 Then ; reached the top of the list
_GUICtrlTreeView_SetChecked($hTreeView, $hTvItem, $fTvCheck)
Else
$hNext = $hTvParent
; check to see if any siblings are checked
$hSibling = _GUICtrlTreeView_GetFirstChild($hTreeView, $hNext)
$bCheckedFlag = True
While $hSibling > 0
If _GUICtrlTreeView_GetChecked($hTreeView, $hSibling) Then
$bCheckedFlag = False
ExitLoop
EndIf
$hSibling = _GUICtrlTreeView_GetNextSibling($hTreeView, $hSibling)
WEnd
If $bCheckedFlag Then
_GUICtrlTreeView_SetChecked($hTreeView, $hNext, $fTvCheck)
EndIf
If _GUICtrlTreeView_GetParentHandle($hTreeView, $hNext) Then
_TvCheckboxParent($hNext, $fTvCheck)
EndIf
EndIf
EndIf
EndFunc ;==>_TvCheckboxParent
Func WM_NOTIFY($hWnd, $msg, $wParam, $lParam)
Local $tNMHDR, $IdFrom, $iCode

$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$IdFrom = DllStructGetData($tNMHDR, "IdFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hTreeView
Switch $iCode
Case $NM_CLICK
$fDblClk = True
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY

Func about()
MsgBox(64, "About", "Tool Name: Data Restoration Utlity" & @CRLF & @CRLF & @CRLF & "Software Used: Auto IT" & @CRLF & @CRLF & @CRLF & "For issue/Suggestions: Send an email to below EMAIL ID" & @CRLF & @CRLF & "sikaleel@gmail.com")
EndFunc ;==>about

Func _TvGetpath($hTvItem, $fTvCheck)



$GetpathArray[$z] = _GUICtrlTreeView_GetTree($hTreeView, $hTvItem)
$z += 1

EndFunc ;==>_TvGetpath
Edited by Syed23

Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]

Share this post


Link to post
Share on other sites

Syed23,

I think wraithdu was looking at a small reproducer, not the entire code, especially since you haven't made it obvious where all those UDFs are from.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites

ok. if i understood correct let me show the function how i am using for copying the files.

For $i = 0 To UBound($DocsAr) - 1
$mds = _LargeFileCopy(GUICtrlRead($DrivePath) & $Docs & "" & $DocsAr[$i], "C:Users" & @UserName & "Documents" & "" & $DocsAr[$i], BitOR(1, 2, 8))
Next

This is how i am using the function to copy the files. _RecFileListToArray() function will scan my entire my documents folder and shows the files to be copied in Array. I am passing the array into For loop and asking the files to be copied one by one. I am not sure whether due to speed of copy or due to file size it is happening.

Please let me know if you have any other question.

Edited by Syed23

Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]

Share this post


Link to post
Share on other sites

@Syed23: I do not know if it will solve your problem but the snippet provided has an error in it. From _RecFileListToArray.au3:

; Return values .: Success: One-dimensional array made up as follows:
;                  |$array[0] = Number of FilesFolders returned

So your snippet should be:

For $i = 1 To $DocsAr[0]
    $mds = _LargeFileCopy(GUICtrlRead($DrivePath) & $Docs & "" & $DocsAr[$i], "C:Users" & @UserName & "Documents" & "" & $DocsAr[$i], BitOR(1, 2, 8))
Next

[center]Spiderskank Spiderskank[/center]GetOpt Parse command line options UDF | AU3Text Program internationalization UDF | Identicon visual hash UDF

Share this post


Link to post
Share on other sites

@Syed23

Your usage looks correct. The only reason I can think your GUI is showing not responding is because it is taking a really long time for the function to copy and verify a chunk of the file. Are you copying to network drives or somewhere with really slow storage? Do you have an AV running that is trying to scan at the same time and locking things up (you could check if this always happens with a specific file type like EXEs)? You can also try reducing the size of the chunks. They are default at 8MB, which is probably too big in hindsight. Try a smaller value like 1 MB or even down to 64K.

Edited by wraithdu

Share this post


Link to post
Share on other sites

For what it's worth, a long time ago I tested chunk sizes' relation to speed and until I hit VERY small sizes it seemed to not slow the copy down. If memory serves, I even got down to 128KB or so before the speed was much worse.

Also, in hindsight of using this UDF heavily for a pretty long time now, the only thing I can say I dislike about it is that since the UDF creates a new file as the target, the date stamps show as that time. Using Windows native file copy, the timestamps will be the same as the original, so I have added a function in my Sync tool to allow the timestamps to carry over. Not something your UDF can fix, just a comment on something I have had to work around.

Ian


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

What about using FileGetTime & FileSetTime instead?


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites

File times wouldn't be hard to add, just an additional flag bit and a few lines of code.

If it's not too much trouble then that would be awesome.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites

Agreed, the convenience factor would be great.


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

Sorry, this just occurred to me - the date preservation would be ideal if we could specify the flag to do Create, Modify, and Access through a BitAnd, just to cover all bases.....

I'd be happy to put that together if you would like.

Ian


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

I'll get to this tomorrow I think. I've been caught up the last few days with updating a couple of my PortableApps projects and puling the wool over my web host (more on that in the dev forum soon).

Share this post


Link to post
Share on other sites

Please test this updated function. I've only rewritten _LargeFileCopy, not the other 3 yet. I reduced the default buffer size to 2M (same as my _SecureDelete UDF), added flags for copying attributes (including compression and encryption, supported only on NTFS destinations), and for each file time type. I want to optimize buffer creation and update the other 3 functions before updating the main UDF, but for now let me know how it goes.

*snip*

Edited by wraithdu

Share this post


Link to post
Share on other sites

Looking forward to testing, more was added than I thought! Looks GREAT, will beat it up later on.

Ian


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

Here's the full rewrite (except the Raw functions, too much code for code tags, when I update the OP they will be there). I also added copying of Security Descriptors and Ownership (when possible and permitted by user rights). Please read the new information at the top of the UDF and test the hell out of it. If it passes, I'll update the OP soon. Thanks!

*snip*

Edited by wraithdu

Share this post


Link to post
Share on other sites

I edited the above code once more to use my own time functions. It reduces the number of function calls to two, and can set all 3 times in one go.

Edited by wraithdu

Share this post


Link to post
Share on other sites

I've added a few more things for the next official version... got rid of the buffers global var in favor of a few small wrappers and a static var (did you know you still can't redim a static array? you need to use another func that takes the array as a byref parameter.), added an additional static buffer for file hashing, made sure buffers and admin checks are done only once or as few times as possible. Really trying to optimize here, I'm assuming this UDF will be used to copy lots of files in tight loops.

That being said, it would be super awesome to get some functional results from my users, as well as some speed tests once the official revision is released.

Edited by wraithdu

Share this post


Link to post
Share on other sites

LOL, this is probably rarely said, but slow down on the updates - since the time I wanted to update your UDF in my Sync tool you've updated it twice more! :D :D :D

Just teasing, it is awesome to see you pushing it so hard, and much appreciated. I'm going to grab this update and put it in to my Sync tool right now and spend a few hours poking it. Actually, first I will do some transfers and record the performance of the older version from November 2011 that included my own timestamp preservation function.

Thanks, stay tuned.

Ian


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

Heh, well in that case I might as well post the final revision from today with the other performance enhancements. The functionality is the same, but I'm hoping the optimizations make a difference with higher numbers of consecutive transfers.

I really appreciate the critical eye and testing!

*snip*

Edited by wraithdu

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By wraithdu
      The project grew out of my _LargeFileCopy UDF. It is an XCOPY replacement that improves in a few areas that were important to me. First, file verification can be done via bit-by-bit comparison, file hash, or simple size comparison. Second, it supports copying NTFS file/directory compression, encryption, and ACLs. It also has an optional simple progress display. All source files are in the archive. You can ignore the compilation warnings if you use Obfuscator.

      This is a commandline utility, and provides help as such. All you need is 'a3copy /?' and you should be good to go. Enjoy!

      Update: 10/8/12
      - Some fixes in _LargeFileCopy (see LFC thread)
      - Use DllCall versions of FindFirst/NextFile

      Update: 10/4/12
      - Added ability to specify multiple sources to be consolidated into the destination
      - Added flag to flatten the output, ie during a directory copy, all files are copied to the top level of the destination
      - Added check for cyclic copy
      - Built with new and improved _LargeFileCopy, including code cleanup and many optimizations

      Update: 9/22/10
      - Added check for destination same as source

      Update: 9/20/10
      - Added --version switch
      - Changes to _LargeFileCopy UDF, updated hashing functions
      - Updated user input function

      Update: 8/26/10
      - Added Aliases: custom INI defined long options
      - Added return codes, useful for scripting
      - Fix for verification of 0 byte files (fix is in _LargeFileCopy.au3)

      Update: 8/22/10
      - Added support for EFS encryption
      - Small bug fixes and code cleanup

      Help:

      A3COPY 1.0.2.3 Copies file and directory trees. A3COPY source [source [source] ...] destination [options] source Specifies the file(s) to copy. destination Specifies the location and/or name of new files. /C Copy file/directory compression state (NTFS only). /E Copy also empty directories. /F Flush file buffer after each copy. /G Show copy progress of current file. /H Copy hidden or system files. /J Copy using unbuffered I/O. /K Copy file/directory attributes. /L Flatten the output into one destination directory. /N Copy file/directory encryption state (NTFS only). /O Copy file/directory ownership and ACL information (NTFS only). Requires admin rights. /P Print full paths of source and destination. /Q Don't print file names. /R Allow operations on read-only files/directories. /S Recurse into subdirectories. /T Set destination filetimes same as source. NOTE: Only one verify method will be used. The final option flag will take precedence. /V or /V1 Verify the integrity of the copied files using a bit by bit comparison. /V2 Verify the integrity of the copied files using a MD5 hash. /V3 Verify the integrity of the copied files using file size only. Not valid for unbuffered copy operations. /W Apply wildcard to folder search when using /S. /Y Overwrite destination without prompt. /Z Never overwrite destination, suppress prompt. /? This usage information. Long options: --filespec Show source/destination filespec help. --copy Same as /EHRSTVY. --backup Same as /EHKRSTVY. --clone Same as /CEHKNORSTVY. --version Print version information. --help Same as /?. Aliases: Aliases may be set up in 'a3copy.ini' in the same folder as A3COPY. The aliases are invoked in the same way as the built-in long options. Example: a3copy src dest --mycopy [aliases] mycopy=EJSV cpyroot=CKNOV Return codes: 0: no errors 1: source not found 2: invalid file name / wildcard pattern 3: one or more errors copying files
      Filespec help:

      A3COPY 1.0.2.3 Copies file and directory trees. Filespec for source/destination: If source is a single file, then destination may be a file or directory. If destination ends in a '' then a directory is assumed. If not, then a single destination file is assumed unless a direcotry of the same name already exists. If destination is a directory, then the source file name will be used for the destination file. If source is a directory or wildcard filespec, then destination is assumed to be a directory. Wildcard filespec follows standard Windows usage of '*' and '?'. When the source is a directory, if filespec does not include a wildcard then it is assumed the directory is to be copied, and the top level directory attributes will be duplicated if the appropriate switches are set (/C, /K, /N, or /O). If the source filespec includes a wildcard, then it is assumed directory contents are to be copied, and the top level directory attributes will not be duplicated. a3copy.zip
×
×
  • Create New...