.rar verschieben, entpacken & ersetzen

  • Hallo, ich bin noch ziemlich neu und habe eine Frage:

    Wie ist der Befehl, wenn ich ein bestimmte .rar in einen bestimmten Verzeichnis, wie etwa C:\Programme\Mein Ordner verschieben möchte, anschließend entpacke und die bestehende Dateien überschreiben möchte?

    Ich möchte dies nicht nur für mich, sondern für einen Freund ausprobieren.
    Zwar klappt bspw: FileMove ("C:\Programme\MeinOrdner\test.rar", "C:\Programme\MeinOrdner2\test.rar") (oder so ähnlich), aber ein Freund hat kaum den selben Verzeichnis :S

    Ich hoffe wirklich, das ich mich klar ausgedrückt habe :S
    Ansosnten nochmal fragen.

  • Hi,

    Datei aussuchen: FileOpenDialog()
    Zielverzeichnis aussuchen: FileSelectFolder()
    verschieben: FileMove()
    entpacken: Rar.exe x <Archiv Name> oder 7z.exe x <Archiv Name>
    kopieren: FileCopy()


    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hallo!

    Vielen lieben dank für deine Antwort.

    Allerdings habe ich ein neues, etwas größeres Problem..
    Und an diese Stelle bin ich hängen geblieben.

    Ich möchte gerne folgendes:
    Ich möchte einen Zielverzeichnis aussuchen mit soweit ich weis, FileSelectFolder, .rar soll anschließend dort gespeichert werden und automatisch entpackt & Dateien überschrieben werden.

    Hier nun der eigentliche HauptScript:

    [autoit]

    Func Download()

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

    Local $Don_size = InetGetSize($Don_Link)
    Local $hDon_file = InetGet($Don_Link,@ScriptDir & "/" & $Save_filename ,1,1)
    Do
    $lokal_size = FileGetSize(@ScriptDir & "/" & $Save_filename)
    GUICtrlSetData($Progress,100/$Don_size*InetGetInfo($hDon_file,0))
    Sleep(20)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0,"Abgeschlossen","Erfolgreich runtergeladen")
    Sleep(50)
    Exit
    EndFunc

    [/autoit]

    Bin allerdings schon beim FileSelectFolder gescheitert, weil die Datei immer da gespeichert wird, wo der Script ist, aber nicht da, welches ich ausgewählt habe.
    Vermutlich wegen:

    [autoit]

    Local $Don_size = InetGetSize($Don_Link)
    Local $hDon_file = InetGet($Don_Link,@ScriptDir & "/" & $Save_filename ,1,1)

    [/autoit]

    Aber ich weis es nicht so genau :S
    Es tut mir leid, bin aber ein ziemlicher Neuling auf dem Gebiet :S

  • Meinst du so?

    [autoit]

    $sPfad = FileSelectFolder("Bitte Ordner auswählen",@HomeDrive)
    If @error Then $sPfad = @ScriptDir ;Falls kein Ordner ausgewählt wird, Scriptordner nehmen
    $sPfad &= "\"
    $sSave_Filename = "Dateiname.exe"
    $sDon_Link = "http://dl.cdn.chip.de/downloads/2863530/autoit-v3361-setup.exe?1287309408-1287316908-b32c84-B-60a2f6385a457aaa1665269b7809272f.exe"

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

    _Download($sDon_Link,$sPfad,$sSave_Filename) ;Funktion _Download aufrufen

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

    Func _Download($sDownload_Link,$sPfad,$sSave_Filename)

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

    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link,$sPfad & $sSave_filename ,1,1)

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

    Do
    $lokal_size = FileGetSize($sPfad & $sSave_filename)
    GUICtrlSetData($Progress,100/$sDownload_Link*InetGetInfo($hDon_file,0))
    Sleep(20)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0,"Abgeschlossen","Erfolgreich runtergeladen")
    EndFunc
    c

    [/autoit]

    Lg, Fabian

  • Hallo Fabian :)

    vielen lieben dank für deine Antwort.

    Allerdings ist nun folgendes Problem:
    Alles macht seine Aufgabe, .rar wird rübergesendet, aber wie mache ich das, das die .rar automatisch entpackt, und die Dateien in dem Ordner ersetzt wird? :S

    Ich habe es jetzt mal so gemacht und es klappt tatsächlich wunderbar, danke nochmal, Fabian:

    Spoiler anzeigen
    [autoit]

    $sPfad = FileSelectFolder("Bitte Ordner auswählen",@HomeDrive)
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $sSave_Filename = "test.rar"
    $sDon_Link = "Downloadlink"

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

    _Download($sDon_Link,$sPfad,$sSave_Filename)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Download($sDownload_Link,$sPfad,$sSave_Filename)

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

    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link,$sPfad & $sSave_filename ,1,1)

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

    Do
    $lokal_size = FileGetSize($sPfad & $sSave_filename)
    GUICtrlSetData($Progress,100/$Don_size*InetGetInfo($hDon_file,0))
    Sleep(20)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0,"Abgeschlossen","Erfolgreich runtergeladen")
    EndFunc

    [/autoit]
  • Hallo Fabian, vielen dank für deinen Link.
    Ich habe es mir natürlich gründlich angesehen und war interessant.
    Leider bin ich ein Neuling auf dem Gebiet, und soviel weis ich auch nicht :S

    Ich weis nicht, wie ich das im Script (siehe oben) platzieren soll/kann :S

    Sobald die Datei runtergeladen ist, soll es gleich danach entpacken und ersetzen.

    (Dieses Script hier ist aus dem Example Script entnommen)

    Spoiler anzeigen
    [autoit]

    #include

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

    Global $Cancel = False

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

    HotKeySet("{Esc}", "_CancelUnpack")

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

    ;Creates a user-defined DLL Callback function to process Unrar events
    $hUnRAR_CallBack = DllCallbackRegister("_UnRARProc", "int", "uint;int;int;int")

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

    $ArchiveFile = FileOpenDialog("Select the archive file", @MyDocumentsDir, "Archive files (*.rar)")

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

    $OutputFolder = FileSelectFolder("Browse for output path", "", 1)
    If $OutputFolder = "" Then Exit

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

    ;Retrieve comment from archive file
    $comment = _Rar_GetComment($ArchiveFile)
    ConsoleWrite("!> Archive comment: " & $comment & @LF)

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

    ;Open RAR archive and allocate memory structures
    $hArchive = _RAR_OpenArchive($ArchiveFile)
    If @error Then
    MsgBox(16, @error, "Archive open error")
    Exit
    EndIf

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

    ;Test the current archive file
    _Rar_TestArchive($hArchive)
    If @error Then
    MsgBox(16, "UnRAR", "Archive testing error")
    Exit
    Else
    MsgBox(64, "UnRAR", "Archive testing successful")
    EndIf

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

    ;Close RAR archive and release allocated memory
    _RAR_CloseArchive($hArchive)

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

    ;Set a password to decrypt files
    ;_RAR_SetPassword($hArchive, "MyPassword")

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

    ;Returns an integer value denoting UnRAR.dll API version
    ;_RAR_GetDllVersion()

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

    $hArchive = _RAR_OpenArchive($ArchiveFile)
    If @error Then
    MsgBox(16, "UnRAR", "Archive open error")
    Exit
    EndIf

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

    ;Set a user-defined callback function to process Unrar events
    _RAR_SetCallback($hArchive, $hUnRAR_CallBack)

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

    ;Read header of file in archive, performs action and moves the current position in the archive to the next file
    ;Also extract or test the current file from the archive
    _Rar_UnpackArchive($hArchive, $OutputFolder)
    If @error Then
    MsgBox(16, "UnRAR", "Archive unpacking error")
    Exit
    EndIf

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

    If $Cancel = True Then
    MsgBox(64, "UnRAR", "Unpacking cancelled")
    Else
    MsgBox(64, "Done", "Archive unpacked")
    EndIf

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

    DllCallbackFree($hUnRAR_CallBack)

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

    Func _CancelUnpack()
    $Cancel = True
    EndFunc

    [/autoit]


    Nachtrag:

    Ich habe gelesen, das es im Winrar die Option "Selbstentpackendes Archiv" verfügt, und dazu den Befehl: FileInstall, zum entpacken.
    Doch wie soll ich dies platzieren?

    Nachtrag 2:

    Soweit so gut.
    Selbstentpackend funktioniert, wenn ich beim einpacken die Option "selbstentpackendes Archiv erstellen" auswähle.
    Die .exe wird in dem Ordner gespeichert, doch wie starte ich die .exe?

    2 Mal editiert, zuletzt von Jikilie (17. Oktober 2010 um 15:14)

  • Hallo!

    vielen dank für deine Antwort.

    Nun ist es fertig und sieht folgendermaßen aus:

    Spoiler anzeigen
    [autoit]

    $sPfad = FileSelectFolder("Ordner auswählen",@HomeDrive)
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $sSave_Filename = "test.exe"
    $sDon_Link = " ; URL DL "

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

    Sleep(50)

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

    FileDelete($sPfad & "test.exe")

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

    _Download($sDon_Link,$sPfad,$sSave_Filename)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Download($sDownload_Link,$sPfad,$sSave_Filename)

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

    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link,$sPfad & $sSave_filename ,1,1)

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

    Do
    $lokal_size = FileGetSize($sPfad & $sSave_filename)
    GUICtrlSetData($Progress,100/$Don_size*InetGetInfo($hDon_file,0))
    Sleep(5)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0,"Abgeschlossen","Download Erfolgreich.")

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

    Run ($sPfad & "\test.exe", $sPfad)

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

    Sleep(10)
    EndFunc

    [/autoit]

    Allerdings gibt es einen neuen, und hoffentlich letzten Problem.
    Dateien von pblaced.net werden nicht runtergeladen. Die Dateien sind zum Teil von 1 bis 2 MB, bis 15 MB groß, aber sobald der Download gestartet wird, wird der Download sofort wieder abgebrochen bzw., als "abgeschlossen" gestellt.
    Ist da ein Fehler im Downloadlink (ganz üblich: test.pblaced.net/test.exe) oder versteckt sich da ein Fehler im Script?

  • Das ist nicht dein ganzes Script oder? Weil da fehlt nähmlich die Progressbar ;)
    Hast du mir evtl. einen Testdownloadlink von pblaced.net ?

    Habe dein Script noch einbischen aufpoliert ;)

    Spoiler anzeigen
    [autoit]

    $sPfad = FileSelectFolder("Ordner auswählen",@HomeDrive)
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $sSave_Filename = "test.exe"
    $sDon_Link = " ; URL DL "

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

    Sleep(50)

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

    FileDelete($sPfad & "test.exe")

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

    _Download($sDon_Link,$sPfad,$sSave_Filename)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Download($sDownload_Link,$sPfad,$sSave_Filename)

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

    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link,$sPfad & $sSave_filename ,1,1)

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

    Do
    GUICtrlSetData($Progress,100/$Don_size*InetGetInfo($hDon_file,0))
    Sleep(5)
    Until InetGetInfo($hDon_file, 2)
    InetClose($hDon_file)
    MsgBox(0,"Abgeschlossen","Download Erfolgreich.")

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

    Run ($sPfad & "\test.exe", $sPfad)

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

    Sleep(10)
    EndFunc

    [/autoit]


    Lg, Fabian

  • Hallo!

    danke für die Antwort.

    Ja, es ist nicht mein ganzes Script.

    Mein ganzes Script ist hier + zusätzlich den Downloadlink von bplaced, allerdings ist der Button "verbuggt", das Func und alles soll erst dann ausgeführt werden, wenn auf das Button geklickt wird :S

    Hier der Script:

    Spoiler anzeigen
    [autoit]

    opt("GUIOnEventMode",1)
    GUICreate("Test", 623, 442, 192, 124)
    $Pic = GUICtrlCreatePic(@ScriptDir & "pic.jpeg", 0, 0, 635, 293)
    $Progress = GUICtrlCreateProgress(23,220,180,20)
    $Button1 = GUICtrlCreateButton("Start", 4, 250, 217, 41, 0)
    GUICtrlSetOnEvent(-1,"Download")
    GUISetOnEvent(-3,"_exit")
    GUISetState()

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

    $sPfad = FileSelectFolder("Ordner auswählen",@HomeDrive)
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $sSave_Filename = "test.exe"
    $sDon_Link = "http://www.srzscpt.bplaced.net/test.exe"

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

    Sleep(50)

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

    FileDelete($sPfad & "test.exe")

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

    _Download($sDon_Link,$sPfad,$sSave_Filename)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Download($sDownload_Link,$sPfad,$sSave_Filename)

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

    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link,$sPfad & $sSave_filename ,1,1)

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

    Do
    $lokal_size = FileGetSize($sPfad & $sSave_filename)
    GUICtrlSetData($Progress,100/$Don_size*InetGetInfo($hDon_file,0))
    Sleep(5)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0,"Abgeschlossen","Download Erfolgreich.")

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

    Run ($sPfad & "\test.exe", $sPfad)

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

    Sleep(10)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    opt("GUIOnEventMode",1)
    HttpSetUserAgent("Firefox")
    GUICreate("Test", 623, 442, 192, 124)
    $Pic = GUICtrlCreatePic(@ScriptDir & "\pic.jpeg", 0, 0, 635, 293)
    $Progress = GUICtrlCreateProgress(23,220,180,20)
    $Button1 = GUICtrlCreateButton("Start", 4, 250, 217, 41, 0)
    GUICtrlSetOnEvent(-1,"sDownload")
    GUISetOnEvent(-3,"_exit")
    GUISetState()

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

    $sPfad = FileSelectFolder("Ordner auswählen",@HomeDrive)
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $sSave_Filename = "test.exe"
    $sDon_Link = "http://www.srzscpt.bplaced.net/test.exe"

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

    Sleep(50)

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

    FileDelete($sPfad & "test.exe")

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

    While 1
    Sleep(100)
    WEnd
    Func _Download($sDownload_Link,$sPfad,$sSave_Filename)
    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link,$sPfad & $sSave_filename ,1,1)

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

    Do
    $lokal_size = FileGetSize($sPfad & $sSave_filename)
    GUICtrlSetData($Progress,100/$Don_size*InetGetInfo($hDon_file,0))
    Sleep(5)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0,"Abgeschlossen","Download Erfolgreich.")
    Run ($sPfad & "\test.exe", $sPfad)
    Sleep(10)
    EndFunc
    Func sDownload()
    _Download($sDon_Link,$sPfad,$sSave_Filename)
    EndFunc
    Func _exit()
    Exit
    EndFunc

    [/autoit]
  • Der Ansatz stimmt :thumbup:
    Habe einpaar Sachen umgestellt und noch zwei drei Sachen modifiziert, kannst du bei nicht gebrauch wieder entfernen ;)

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode",1)

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

    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10")

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

    GUICreate("Test", 623, 442, 192, 124)
    GUISetOnEvent(-3,"_exit")
    $Pic = GUICtrlCreatePic(@ScriptDir & "\pic.jpeg", 0, 0, 635, 293) ; \ vergessen
    $Progress = GUICtrlCreateProgress(23,220,180,20)
    $Button1 = GUICtrlCreateButton("Start", 4, 250, 217, 41, 0)
    GUICtrlSetOnEvent(-1,"_Benutzereingabe")
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Benutzereingabe()
    $sDon_Link = InputBox("Link","Downloadlink eingeben")
    If @error Then Return -1
    $sPfad = FileSelectFolder("Ordner auswählen",@HomeDrive)
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $sSave_Filename =StringRight($sDon_Link,StringLen($sDon_Link)-StringInStr($sDon_Link,"/",0,-1)) ;Dateiname aus Link herausfiltern
    If FileExists($sPfad & $sSave_Filename) Then FileDelete($sPfad & $sSave_Filename) ;Falls Datei bereits an Zielort existiert löschen
    _Download($sDon_Link,$sPfad,$sSave_Filename)
    EndFunc

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

    Func _Download($sDownload_Link,$sPfad,$sSave_Filename)

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

    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link,$sPfad & $sSave_filename ,1,1)

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

    Do
    $lokal_size = FileGetSize($sPfad & $sSave_filename)
    GUICtrlSetData($Progress,100/$Don_size*InetGetInfo($hDon_file,0))
    Sleep(5)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0,"Abgeschlossen","Download Erfolgreich.")

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

    Run ($sPfad & "\test.exe", $sPfad)

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

    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Lg, Fabian

  • Hallo!

    vielen dank.

    Es ist fertig, allerdings möchte ich einen 2. Button einbauen, aber es erhält entweder einen Error wegen GUI EVENT CLOSE, oder der zweite Button übernehmt den eigentlichen Funktion von Button 1 und Button 1 macht nichts.

    Habe einen neuen .au3 angelegt und etwas ausprobiert, und dabei ist folgendes rausgekommen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10")
    $Form1 = GUICreate("Test", 623, 442, 192, 124)
    $Button1 = GUICtrlCreateButton("Start", 4, 250, 217, 41, 0)
    $Progress = GUICtrlCreateProgress(23,220,180,20)
    $Button2 = GUICtrlCreateButton("Button2", 304, 232, 313, 49)
    $Pic = GUICtrlCreatePic(@ScriptDir & "\bild.jpg", 0, 0, 633, 217)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Benutzereingabe()
    $sPfad = FileSelectFolder("Wähle Ordner",@HomeDrive)
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $sSave_Filename = "test.exe"
    If FileExists($sPfad & $sSave_Filename) Then FileDelete($sPfad & $sSave_Filename)
    $sDon_Link = "http://www.srzscpt.bplaced.net/test.exe"
    _Download($sDon_Link,$sPfad,$sSave_Filename)
    EndFunc

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

    Func _Download($sDownload_Link,$sPfad,$sSave_Filename)

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

    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link,$sPfad & $sSave_filename ,1,1)

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

    Do
    $lokal_size = FileGetSize($sPfad & $sSave_filename)
    GUICtrlSetData($Progress,100/$Don_size*InetGetInfo($hDon_file,0))
    Sleep(5)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0,"Fertig.","Erfolgreich.")

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

    Run ($sPfad & "\test.exe", $sPfad)

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

    EndFunc
    Case $Button2
    MsgBox(0, "test", "test")
    EndSwitch
    WEnd

    [/autoit]

    Button 2 tut seine Aufgabe, aber Button 1 reagiert überhaubt nicht, und das gesamte Script bleibt schließlich stecken.

  • Hallo,

    Du hast nur die Struktur durcheinander gebracht ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10")
    $Form1 = GUICreate("Test", 623, 442, 192, 124)
    $Button1 = GUICtrlCreateButton("Start", 4, 250, 217, 41, 0)
    $Progress = GUICtrlCreateProgress(23, 220, 180, 20)
    $Button2 = GUICtrlCreateButton("Button2", 304, 232, 313, 49)
    $Pic = GUICtrlCreatePic(@ScriptDir & "\bild.jpg", 0, 0, 633, 217)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _Benutzereingabe()
    Case $Button2
    ;Mach hier etwas
    EndSwitch

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

    WEnd

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

    Func _Benutzereingabe()
    $sPfad = FileSelectFolder("Wähle Ordner", @HomeDrive)
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $sSave_Filename = "test.exe"
    If FileExists($sPfad & $sSave_Filename) Then FileDelete($sPfad & $sSave_Filename)
    $sDon_Link = "http://www.srzscpt.bplaced.net/test.exe"
    _Download($sDon_Link, $sPfad, $sSave_Filename)
    EndFunc ;==>_Benutzereingabe

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

    Func _Download($sDownload_Link, $sPfad, $sSave_Filename)

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

    Local $Don_size = InetGetSize($sDownload_Link)
    Local $hDon_file = InetGet($sDownload_Link, $sPfad & $sSave_Filename, 1, 1)

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

    Do
    $lokal_size = FileGetSize($sPfad & $sSave_Filename)
    GUICtrlSetData($Progress, 100 / $Don_size * InetGetInfo($hDon_file, 0))
    Sleep(5)
    Until $lokal_size >= $Don_size
    InetClose($hDon_file)
    MsgBox(0, "Fertig.", "Erfolgreich.")

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

    Run($sPfad & "\test.exe", $sPfad)

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

    EndFunc ;==>_Download

    [/autoit]

    Lg, Fabian

  • Hallo! Danke :)

    Ich habe etwas umgeändert.
    Sobald dies gelöst ist, kann ich diesen Thread als "gelöst" abstempeln.
    Ich möchte eine ganz andere Progressbar.
    Soweit, so gut. Leider bin ich hängen geblieben bei einer Zeile.
    Es erscheint einen Error, sobald das Progressfenster erscheint.
    Alle Informationen sind außerdem bereits enthalten, allerdings möchte ich noch hinzufügen, von welcher Homepage die Datei runtergeladen wird (in dem Fall: bplaced.com/name/test.exe beispielsweise) und zusätzlich, wohin die Datei gespeichert wird (als Anzeige den Pfad, beispiel: Datei wird runtergeladen von bplaced.com/name/test.exe nach angegebenen Pfad (wie C:/Eigener Ordner))
    Zusätzlich ist mir aufgefallen, dass das Bar ganz oben mitte im Bildschirm erscheint.
    Kann es eingestellt werden, dass das Bar zumindest in der Nähe des Scriptes (wie Bildschirm mitte, neben dem Script, auf dem Script, nicht im Gui implentiert) erscheint?

    Desweiteren ist mir aufgefallen, sobald FileSelectFolder abgebrochen wird (auf Abbrechen) geklickt wird, das die Datei trotzdem heruntergeladen werden.
    Kann man das unterbinden?

    Verzeihung für diese ganzen Fragen, ich bin selbst noch etwas neu und bin an diesen Punkten selbst gescheitert :S

    Hier das Script:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10")
    GUICreate("test", 635, 293, 187, 122)
    $Button1 = GUICtrlCreateButton("Ausführen!", 4, 250, 217, 41, 0)

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

    $Button2 = GUICtrlCreateButton("Offen", 472, 8, 73, 25)
    GUISetState(@SW_SHOW)
    $Pic = GUICtrlCreatePic(@ScriptDir & "\pic.jpg", 0, 0, 635, 293)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _Benutzereingabe()
    Case $Button2

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

    EndSwitch

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

    WEnd

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

    Func _Benutzereingabe()
    $sPfad = FileSelectFolder("Ordner auswählen", "")
    If @error Then $sPfad = @ScriptDir
    $sPfad &= "\"
    $FileName = "test.exe"
    If FileExists($sPfad & $FileName) Then FileDelete($sPfad & $FileName)
    $FileURL = "http://www.srzscpt.bplaced.net/test.exe"
    _DownloadProgress($FileURL, $sPfad, $FileName)
    EndFunc

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

    Func _DownloadProgress($FileURL, $sPfad, $FileName)
    $FileSaveLocation = ($sPfad "")

    $FileSize = InetGetSize($FileURL)
    $FileDownload = InetGet($FileURL, $FileSaveLocation, 0, 1)

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

    ProgressOn("", "", "", -1, 5, 18)
    Do
    $Percentage = InetGetInfo($FileDownload, 0) * 100 / $FileSize
    ProgressSet($Percentage, Round($Percentage, 0) & "% Downloaded " & Round(InetGetInfo($FileDownload, 0) / 1048576, 2) & " of " & Round($FileSize / 1048576, 2) & " MB", "Downloading " & $ProgramName)
    Sleep(250)
    Until InetGetInfo($FileDownload, 2)
    MsgBox(0, "Fertig.", "Erfolgreich.")
    Sleep(1000)
    Run($sPfad & "\test.exe", $sPfad)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Jikilie (25. Oktober 2010 um 18:58)

  • Hallo ;)

    ich pushe diesen Thread ein einziges mal.

    Meine Frage lautet, wie ich die Daten (Download) in einen Progressbar, also ProgressOn, ProgressSet, und ProgressOff setze.
    Dabei muss die Daten nur in % Angaben angezeigt werden, und in Kbt. Nur, aber nur, wenn es wirklich möglich ist, vielleicht noch angezeigt werden, von welcher Homepage die Daten runtergeladen werden.

    Wäre sehr, sehr schön, wenn das jemand wüsste :)
    Das Script steht auf meinen post oben drüber.

  • Progressbar und Informationen in der Gui untergebracht.
    Ist nur ein Beispiel, du kannst den Text und Position usw.. der Controls natürlich nach deinen Wünschen anpassen.

    Spoiler anzeigen

    #include <GUIConstants.au3>

    #Region ### START Koda GUI section ### Form=
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10")
    GUICreate("test", 635, 293, 187, 122)
    $Button1 = GUICtrlCreateButton("Ausführen!", 4, 240, 217, 41, 0)
    $Button2 = GUICtrlCreateButton("Offen", 472, 8, 73, 25)
    $Pic = GUICtrlCreatePic(@ScriptDir & "\pic.jpg", 0, 0, 635, 293)
    GUICtrlCreateGroup("Info",20,20,400,180)
    $Progress = GUICtrlCreateProgress(30,40,280,40)
    $Label_Status = GUICtrlCreateLabel("Status",30,100,370,20)
    $Label_Quelle = GUICtrlCreateLabel("Quelle",30,130,370,20)
    $Label_Ziel = GUICtrlCreateLabel("Ziel",30,160,370,20)

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _Benutzereingabe()
    Case $Button2

    EndSwitch

    WEnd

    Func _Benutzereingabe()
    $sPfad = FileSelectFolder("Ordner auswählen", "")
    If @error Then Return -1
    If StringRight($sPfad,1) <> "\" Then $sPfad &= "\"
    $FileName = "ccleaner.exe"
    If FileExists($sPfad & $FileName) Then FileDelete($sPfad & $FileName)
    $FileURL = "http://dl.cdn.chip.de/downloads/1671596/ccsetup236_slim.exe?1288196299-1288203799-fcdf4a-B-c027ab3b7a01a427b0c131aad7a59e48.exe"
    _DownloadProgress($FileURL, $sPfad, $FileName)
    EndFunc


    Func _DownloadProgress($FileURL, $FileSaveLocation, $FileName)
    Local $iProzent

    $FileSize = InetGetSize($FileURL)
    $FileDownload = InetGet($FileURL, $FileSaveLocation & $FileName, 0, 1)

    GUICtrlSetData($Label_Quelle,StringLeft($FileURL,60))
    GUICtrlSetData($Label_Ziel, $FileSaveLocation&$FileName)
    GUICtrlSetData($Label_Status,"% Downloaded " & Round(InetGetInfo($FileDownload, 0) / 1048576, 2) & " of " & Round($FileSize / 1048576, 2) & " MB .... Downloading " & $FileName)

    Do
    $iProzent = InetGetInfo($FileDownload, 0) * 100 / $FileSize
    GUICtrlSetData($Progress,$iProzent)
    GUICtrlSetData($Label_Status,"% Downloaded " & Round(InetGetInfo($FileDownload, 0) / 1048576, 2) & " of " & Round($FileSize / 1048576, 2) & " MB .... Downloading " & $FileName)
    Sleep(50)
    If InetGetInfo($FileDownload,4) <> 0 Then Return -1 ;Falls Fehler auftritt
    Until $iProzent = 100

    InetClose($FileDownload)

    MsgBox(0, "Fertig.", "Erfolgreich.")
    Sleep(1000)
    Run($FileSaveLocation & $FileName, $FileSaveLocation)
    EndFunc

    Lg, Fabian

  • Hallo Fabian, vielen dank für deine Antwort.

    Gäbe etwas, und zwar möchte ich diesen Progressbar nicht in der GUI haben.

    So sieht der Script aus, natürlich fehlerhaft:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10")
    GUICreate("test", 635, 293, 187, 122)
    $Button1 = GUICtrlCreateButton("Ausführen!", 4, 240, 217, 41, 0)
    $Button2 = GUICtrlCreateButton("Offen", 472, 8, 73, 25)
    $Pic = GUICtrlCreatePic(@ScriptDir & "\pic.jpg", 0, 0, 635, 293)
    GUICtrlCreateGroup("Info",20,20,400,180)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _Benutzereingabe()
    Case $Button2

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

    EndSwitch

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

    WEnd

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

    Func _Benutzereingabe()
    $sPfad = FileSelectFolder("Ordner auswählen", "")
    If @error Then Return -1
    If StringRight($sPfad,1) <> "\" Then $sPfad &= "\"
    $FileName = "Hijackthis.exe"
    If FileExists($sPfad & $FileName) Then FileDelete($sPfad & $FileName)
    $FileURL = "http://www.hijackthis.de/downloads/HJTInstall.exe"
    _DownloadProgress($FileURL, $sPfad, $FileName)
    EndFunc

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

    Func _DownloadProgress($FileURL, $FileSaveLocation, $FileName)

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

    ProgressOn("", "", "")

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

    Do
    $FileSize = InetGetSize($FileURL)
    Until

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

    ProgressSet

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

    $FileDownload = InetGet($FileURL, $FileSaveLocation & $FileName, 0, 1)
    (StringLeft($FileURL,60))
    ($FileSaveLocation&$FileName)
    ("% Downloaded " & Round(InetGetInfo($FileDownload, 0) / 1048576, 2) & " of " & Round($FileSize / 1048576, 2) & " MB .... Downloading " & $FileName)

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

    $iProzent = InetGetInfo($FileDownload, 0) * 100 / $FileSize
    ($Progress,$iProzent)
    GUICtrlSetData("% Downloaded " & Round(InetGetInfo($FileDownload, 0) / 1048576, 2) & " of " & Round($FileSize / 1048576, 2) & " MB .... Downloading " & $FileName)
    Sleep(50)
    If InetGetInfo($FileDownload,4) <> 0 Then Return -1
    $iProzent = 100

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

    InetClose($FileDownload)

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

    ProgressOff ()

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

    MsgBox(0, "Fertig.", "Erfolgreich.")
    Sleep(1000)
    Run($FileSaveLocation & $FileName, $FileSaveLocation)
    WEnd
    EndFunc

    [/autoit]

    Eine Progressbar sollte extern erscheinen, mit den genannten Informationen.
    Habe Schwierigkeiten, ProgressOn, -Set und -Off richtig zu setzen und überhaubt :S
    Hoffe, du weist da was.