autoit - 如何执行下载的文件?

时间:2015-01-05 19:31:41

标签: autoit

所以我试图设置一个脚本来执行从URL下载的文件。

目前,我有这个代码,它只会启动默认浏览器,然后访问输入框中输入的URL(然后导致下载开始)。

$inputBox = GUICtrlRead($downloadsURL)
ShellExecute($inputBox)

该文件当前正在下载到当前登录的用户"下载"目录(Windows Box)。

什么是强大的"执行下载文件的解决方案?

文件名经常更改...是否有办法重命名下载的文件?

或者确保我有一个"清洁"首先下载目录,然后让autoit在运行脚本后自动执行目录中的任何文件吗?

1 个答案:

答案 0 :(得分:1)

  1. 您应该始终清理原始下载文件。离开浪费的空间对最终用户来说是不可取的。
  2. 你还没有给我们太多的帮助。 GUICtrlRead只是意味着你正在读取一个控件(我假设一个输入框)。如果这是URL,那么我建议使用InetGet()将文件下载到特定的位置,然后使用Run或ShellExecute来运行该文件(如果那是需要以这种方式运行的那种文件)。
  3. 所以看起来可能就是这样:

    Global $gszDir = @DocumentsCommonDir
    Global $gszFileName = "mydownloadfile.exe"
    Global $gszURL = "URL To File To Download"
    
    _DownloadAndRemoveOriginal($gszURL, $gszDir, $gszFileName)
    If @error Then
        MsgBox(16 + 262144, "Error", "Error downloading: " & @error)
        Exit 1
    EndIf
    
    Func _DownloadAndRemoveOriginal($szURL, $szDirectory, $szFileName)
    
        ; remove old downloaded file
        Local $szFullPath = $szDirectory & "\" & $szFileName
        If FileExists($szFullPath) Then
            FileDelete($szFullPath)
        EndIf
    
        ; download and wait for download to complete
        Local $iGet = InetGet($szURL, $szFullPath, 1, 0)
        If Not $iGet Then
            ; failed
            Return SetError(1, 0, 0)
        EndIf
    
        Local $iRet = ShellExecute($szFullPath)
        Return SetError(0, 0, $iRet)
    EndFunc