Jump to content

autoit and rsync help needed


Recommended Posts

hi there,

I'm very new at AutoIt, trying to learn...

this is the AutoIt script I'm using now:

#Include <GuiListbox.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <Array.au3>
;$sCmd = "rsync -vrtz --delete --progress /cygdrive/c/test2 177.0.0.1::asecretpwd"  ; Test command
$sCmd = "rsync.exe -v -rlt --progress --partial-dir=.rsync-partial --timeout=3600 'IP::FolderBackup/' '../'"
$dir =  "../"
$size = DirGetSize($dir)
$npid = Run($scmd, @ScriptDir, @SW_hide, "0x2")
$nAutoTimeout = 10      ; Time in seconds to close window after finish
$nDeskPct = 60          ; % of desktop size (if percent)
$text = ""
$days = ""
; $nHeight = 480          ; height/width of the main window (if fixed)
; $nWidth = 480

$sTitRun = "Executing process. Wait...."     ;
$sTitDone = "Process done"                ;

$sSound = @WindowsDir & "\Media\Ding.wav"       ; End Sound

$sButRun = "Cancel"                           ; Caption of "Exec" button
$sButDone = "Close"                            ; Caption of "Close" button


Opt("GUIOnEventMode", 1)

if $nDeskPct > 0 Then
    $nHeight = @DesktopHeight * ($nDeskPct / 100)
    $nWidth = @DesktopWidth * ($nDeskPct / 100)
EndIf


If $CmdLine[0] > 0 Then
    $sCmd = ""
    For $nCmd = 1 To $CmdLine[0]
        $sCmd = $sCmd & " " & $CmdLine[$nCmd]
    Next
EndIf

; AutoItSetOption("GUIDataSeparatorChar", Chr(13)+Chr(10))

$nForm = GUICreate($sTitRun, $nWidth, $nHeight)
GUISetOnEvent(-1, "CloseForm")

$nList = GUICtrlCreateList ("", 10, 200, $nWidth - 20, $nHeight - 250, $WS_BORDER + $WS_VSCROLL)
GUICtrlSetFont (-1, 9, 0, 0, "Courier New")

$nClose = GUICtrlCreateButton ($sButRun, $nWidth - 100, $nHeight - 40, 80, 30)
GUICtrlSetOnEvent (-1, "CloseForm")

GUISetState(@SW_SHOW)   ;, $nForm)
While 1
    $sLine = StdoutRead($nPID)
    $text &= $sline&@CRLF
   If @error Then ExitLoop


if StringLen ($sLine) > 0 then

       $sLine = StringReplace ($sLine, Chr(13), "|")
        $sLine = StringReplace ($sLine, Chr(10), "")
        if StringLeft($sLine, 1)="|" Then
            $sLine = " " & $sLine
        endif
if $days = "" then $days = StringSplit($sline, " ")


        GUICtrlSetData ($nList, $sLine)


        _GUICtrlListBox_SetCurSel ($nList, _GUICtrlListBox_GetCount ($nList) - 1)
   EndIf
Wend








;-------------------
$sLine = " ||"
GUICtrlSetData ($nList, $sLine)
_GUICtrlListBox_SetCurSel ($nList, _GUICtrlListBox_GetCount ($nList) - 1)

GUICtrlSetData ($nClose, $sButDone)

WinSetTitle ($sTitRun, "", $sTitDone)
If $sSound <> "" Then
    SoundPlay ($sSound)
EndIf

$rInfo = DllStructCreate("uint;dword")      ; # LASTINPUTINFO
DllStructSetData($rInfo, 1, DllStructGetSize($rInfo));

DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($rInfo))
$nLastInput = DllStructGetData($rInfo, 2)

$nTime = TimerInit()

While 1
    If $nAutoTimeout > 0 Then
        DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($rInfo))
        If DllStructGetData($rInfo, 2) <> $nLastInput Then
            ; Tocó una tecla
            $nAutoTimeout = 0
        EndIf
    EndIf

    If $nAutoTimeout > 0 And TimerDiff ($nTime) > $nAutoTimeOut * 1000 Then
        ExitLoop
    EndIf

    Sleep (100)
Wend


Func CloseForm()

    Exit
EndFunc

sometimes rsync dies with connection reset by peer...

how can I make my AutoIt restart the rsync in case it disconnected/stop working

also, how can I make the AutoIt post the update on 1 line only? right now it's writing 1 line for each update...some of my files are huge that means I get a lot of lines in the console

thank you for your help

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...