Jump to content

Unzip your files without progress bar

Recommended Posts

Very simple: I had seen many examples of unzipping files (Zip) archive, but most of those example where using either some external .dll or are performing the job with the progress bar. Here is a small example how you can unzip your files without any external libraries and without any progress bar


$objShell5 = ObjCreate ("Shell.Application")

Enjoy :)

Share this post

Link to post
Share on other sites

performing the job with the progress bar

??? Progress bar? You can extract zip files using a progress control!? :P

My contributions to the AutoIt Community - ##AutoIt at freenode, real-time chat



If I have hurt or offended you in anyway, Please accept my apologies, I never (regardless of the situation) intend to do that to anybody.

Share this post

Link to post
Share on other sites

By "progress bar" I mean - the windows progress bar which is showing- that your files are moving from one directory to another. And if you have say 10000 files in zip file? So if you don't like that win progress bar- this example is right for you :)

Ah, btw- if you do want the progress bar, then just remove this part from the code

Edited by topten

Share this post

Link to post
Share on other sites

Nice, what limitation of OS does this have being object based (XP, 7, Vista, 8, 10)

I wrote a program to update maps for a 911 system and hated how the transfer dialog came up when the file was done downloading.

Edit: Here we go a copy of my code updated with this method.
I commented out the 2 lines that were doing the unzipping before, and I can remove the Include for Zip.au3

I noticed that you must have the directory already or this will not work so I added in the DirCreate()

My question here is how I was checking the return of the _Zip_UnzipAll() for log file usage.  How can I check the return of this unzip method so I can log the results accurately?

#Include <Array.au3>
#Include <File.au3>
#Include <Zip.au3>

$sMaps = "C:\Tiburon\"  ;Where To Save Maps

$aZip = _FileListToArray("C:\Tiburon", "*.zip", $FLTA_FILES, True) ;Get A List of All .Zip Files
If @Error Then ;If No Downloads Exit
    ;MsgBox(0, "", @Error)
Else ;Else Get The Highest Version Map .Zip Package and Save to $sZip and get Name and save in $sMap2
    $sZip = $aZip[$aZip[0]]
    $aMap = StringSplit($sZip, "\")
    $sMap2 = StringTrimRight($aMap[$aMap[0]], 4)
    $sMaps &= $sMap2

$sLogPath = "C:\Tiburon\" & $sMap2 & ".log" ;Create Our Log File Path with $sMap2 as the Name
_FileWriteLog($sLogPath, "New Map Package " & $sMap2 & " was downloaded") ;Write To Log that The .Zip was downloaded
$vStep1 = DirRemove($sMaps, 1) ;If Zip was Already Extracted Delete As To Extract New (Prevent Corrupted Downloads)
If $vStep1 = 1 Then _FileWriteLog($sLogPath, "Deleted old " & $sMap2 & " folder") ;Write To Log That Old Folder Was Found and Deleted
$objShell5 = ObjCreate("Shell.Application")
$FilesInZip5 = $objShell5.NameSpace($sZip).items
;$vStep2 = _Zip_UnzipAll($sZip, $sMaps, 1) ;Unzip Our File
;If $vStep2 = 0 Then _FileWriteLog($sLogPath, "Successfully Unziped Package for " & $sMap2) ;Log That We Unzipped Our File
$vStep3 = FileDelete($sZip) ;Delete Zip Package When Finished
If $vStep3 = 1 Then _FileWriteLog($sLogPath, "Successfully Deleted " & $sMap2 & " .Zip Package") ;Log That We Deleted Our Zip File Successfully


Edited by ViciousXUSMC

Share this post

Link to post
Share on other sites

ViciousXUSMC ,

"How can I check the return of this unzip method so I can log the results accurately?"

I  am not sure yet about how to check the return, I will try to research that question.


In my case- the script was waiting untill the files are unzipped and then it went on further execution

Share this post

Link to post
Share on other sites

   $objShell5 = ObjCreate ("Shell.Application")


I used this code for extracting my homework but I got this error instead:-

$FilesInZip5=$objShell5.NameSpace($ZipFile5)^ ERROR

What Could be the possible reason.
I am using this inside a function


Share this post

Link to post
Share on other sites

You need to add some error checking to your script. Look at IsObj in the help file, and look at placing it there after your ObjCreate statement. You can also try running the script with #RequireAdmin at the top.

Share this post

Link to post
Share on other sites

Did you try with #RequireAdmin? You need to error check the rest of the script:

  • Confirm the zip file exists in the directory you reference in line 1
  • Confirm the directory you reference in line 2 is accessible, and you have rights to it
  • Confirm you can create the Shell.Application in line 3
  • etc. etc. etc.

Look at @error and FileExists in the help file.

Share this post

Link to post
Share on other sites

Okay, Its working Now.
I just copied the code outside the function i had defined

But when I copied it back inside the function it stops working again

Any Clue?

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

  • Similar Content

    • By Tersion
      Here the this wiki page with list of available UDFs for data compression. For my tasks I only need ZIP support, so I started looking at pure AutoIt UDFs without any 3rd party dlls. And found out that most of available realizations uses standard ("native method") Windows dll - "zipfldr.dll". So for now I chose ZIP UDF by wraithdu. I've tested it on Windows 7 (x64) and it seem works fine. But here the comment from another topic where user says that Windows 10 discontinued support of "zipfldr.dll". Now I confused. I don't have around any Windows 10 machine to tested it. So maybe someone could confirm or deny that? Or maybe would better to switch to UDF with 7zip dll?
      I need an advice...
    • By tintin92

      How can I automatically download a list of zip files, like the ones in the quote, using a AutoIt script?
      Is it possible with AutoIt script?
    • By ur
      I got a UDF to zip the files from below link.
      With this I am able to create a zip file but the post processing of zip file creation I am checking the zip file exists or not, but it is giving the message as file not found.
      Any sugestions??
      #include "Zip.au3" ZipLogs() Func ZipLogs() $ResultsFolder = @ScriptDir & "\Results" $ResultsDestFolder = @ScriptDir & "\Results_Archive" $zipFile = $ResultsDestFolder & "\Results_"&TodayDateTime()&".zip" DirCreate($ResultsDestFolder) Dim $Zip = _Zip_Create($zipFile) ;Create The Zip File. Returns a Handle to the zip File _Zip_AddFolderContents($Zip, $ResultsFolder) ;Add a folder's content in the zip file if FileExists(@ScriptDir&"\Logging.log") then _Zip_AddFile($Zip,@ScriptDir&"\Logging.log") FileDelete(@ScriptDir&"\Logging.log") EndIf if FileExists(@ScriptDir&"\RemoteExecution_Log.txt") then _Zip_AddFile($Zip,@ScriptDir&"\RemoteExecution_Log.txt") FileDelete(@ScriptDir&"\RemoteExecution_Log.txt") EndIf if FileExists($zipFile) then DirRemove($ResultsFolder,$DIR_REMOVE) Else MsgBox(0,"","Zip file not found") EndIf return $zipFile EndFunc  
    • By rootx
      There is a way to unzip a file without using other party software, or can I include 7zip without licensing issues,  Thx
    • By ur
      There is a build machine in the network where it will automatically download the code from source repository and compile using visual studio and compresses the complete code in a zip file.
      I have added a line at the end of the build script(written in python on that machine) to copy that zip file to my ESX Virtual machine.
      Where I kept a AutoIT exe to wait for the zip file, once it is copied then I will extract the contents and find only the dll files in the extracted folder and do the Install creation using Installshield silently and copy the created setup files to anther machine.
      I wrote the script till the setup files creation.
      But now the problem is, when the zip file is copying through network, the autoit script is detecting it even the copy is still in progress and trying to extract the zip file and failing.
      Even when I am checking whether the file in use is not working.
      Any suggestion on how to check whether the copy is completed.?
  • Create New...