Nutster Posted March 19, 2008 Share Posted March 19, 2008 On some systems I work on, the web browser has been adjusted to prevent downloads, particularly publicly used computers, like in the library. So If I want to actually download something onto my USB flash stick, I just use the following script, compiled on the stick. It asks a couple of questions and then downloads into the Download directory on the same drive as the compiled script. It also includes a decent version of BaseName. expandcollapse popup#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=H:\AutoIt\General Download.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UseAnsi=y #AutoIt3Wrapper_Au3Check_Stop_OnWarning=y #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #AutoIt3Wrapper_Run_Tidy=y #Tidy_Parameters=/sci 1 /sf #AutoIt3Wrapper_Run_Obfuscator=y #Obfuscator_Parameters=/striponly /sci 1 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs ---------------------------------------------------------------------------- AutoIt Version: 3.2.10.0 Author: "Nutster" David Nuttall Script Function: Download a file that is given in the InputBox #ce ---------------------------------------------------------------------------- AutoItSetOption("MustDeclareVars", True) Global $sURL, $sFileName Global $sDrive = StringLeft(@ScriptDir, 2) ; should contain <drive>:, like H: Global $sPrefix = $sDrive & "\Download\" $sURL = InputBox(@ScriptName, "Enter the URL to download.", "", " M") If StringStripWS($sURL, 3) = "" Then Exit $sFileName = InputBox(@ScriptName, "Enter the local filename.", BaseName($sURL), " M") If StringStripWS($sFileName, 3) = "" Then Exit InetGet($sURL, $sPrefix & $sFileName, 1, 0) MsgBox(64, "File Download", "Task Complete") Func BaseName($sFileName) Local $I = StringInStr($sFileName, "/", 0, -1) If $I = 0 Then $I = StringInStr($sFileName, "\\", 0, -1) If $I = 0 Then Return $sFileName Else Return StringMid($sFileName, $I + 1) EndIf EndFunc ;==>BaseName David NuttallNuttall Computer Consulting An Aquarius born during the Age of Aquarius AutoIt allows me to re-invent the wheel so much faster. I'm off to write a wizard, a wonderful wizard of odd... Link to comment Share on other sites More sharing options...
Swift Posted March 19, 2008 Share Posted March 19, 2008 Haha! Simple but elegant! Thanks for sharing Nutster! Link to comment Share on other sites More sharing options...
daslick Posted March 19, 2008 Share Posted March 19, 2008 (edited) I rewrote your script as a function to fit my needs. Hopefully someone else can use it as well. Func httpsave($sURL, $sFileName = '', $sDirectory = @ScriptDir) If $sFileName = '' Then $sFileName = BaseName($sURL) Select Case StringStripWS($sFileName, 8) = "" Case StringStripWS($sURL, 3) = "" Case Else InetGet($sURL, $sDirectory & '\' & $sFileName, 1, 0) EndSelect EndFunc ;==>httpsave Edited March 19, 2008 by daslick Link to comment Share on other sites More sharing options...
karman Posted March 19, 2008 Share Posted March 19, 2008 I rewrote your script as a function to fit my needs. Hopefully someone else can use it as well. Func httpsave($sURL, $sFileName = '', $sDirectory = @ScriptDir) If $sFileName = '' Then $sFileName = BaseName($sURL) Select Case StringStripWS($sFileName, 8) = "" Case StringStripWS($sURL, 3) = "" Case Else InetGet($sURL, $sDirectory & '\' & $sFileName, 1, 0) EndSelect EndFunc ;==>httpsave why have you added two pointless Case statements? 4_4 Link to comment Share on other sites More sharing options...
daslick Posted March 20, 2008 Share Posted March 20, 2008 Func httpsave($sURL, $sFileName = '', $sDirectory = @ScriptDir) If $sFileName = '' Then $sFileName = BaseName($sURL) Select Case StringStripWS($sFileName, 8) = "" Case StringStripWS($sURL, 3) = "" Case Else InetGet($sURL, $sDirectory & '\' & $sFileName, 1, 0) EndSelect EndFunc;==>httpsave I used the two 'pointless' Case statements to catch the cases where sFileName or sURL were empty (or all spaces) and abort trying to InetGet Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted March 20, 2008 Moderators Share Posted March 20, 2008 (edited) If you really want to get down and dirty with it:_URLSplitEdit:Added UDF name Edited March 20, 2008 by SmOke_N Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
HAL9000 Posted March 20, 2008 Share Posted March 20, 2008 (edited) My batch downloader #include <File.au3> Dim $szDrive, $szDir, $szFName, $szExt $line = _FileCountLines ( @scriptdir & "\list.ini" ) for $i = 1 to $line $path = FileReadLine ("list.ini",$i) if $path = "OK" then ContinueLoop $size =InetGetSize ( $path ) $name = _PathSplit ($path, $szDrive, $szDir, $szFName, $szExt) InetGet($path, $name[3]&$name[4], 1, 1) ProgressOn ("Batch Download",$name[3]&$name[4]) While @InetGetActive ProgressSet ((@InetGetBytesRead/$size)*100, Int((@InetGetBytesRead/$size)*100)& " %" & " Bytes: " & $size ) sleep (500) Wend if FileExists($name[3]&$name[4]) then _FileWriteToLine (@scriptdir & "\list.ini",$i,"OK",1) next Edited March 24, 2008 by HAL9000 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now