19

I want to make a BAT file that will ZIP or UNZIP a file. For zipping a file, I have found this question: Can you zip a file from the command prompt using ONLY Windows' built-in capability to zip files?

The answers given there are great and working for me, but I couldn't find any information about how to unzip the files. Like in the link, I can't assume any third-party tools (except winRAR).

Thanks ahead and sorry for English mistakes

10

This batch file code will help you to unzip a file.

@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "C:\Temp\" "c:\FolderName\batch.zip"
exit /b

:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%

N.B. C:\Temp is folder where it stores the Extracted (UnZip) File.

And, c:\FolderName\batch.zip is source path, (where Zip files are stored).

Please, Change the Full File Path ( Drive, Folder & Zip file name), according to your need.

| improve this answer | |
22

If you have Windows 10, you can use the much shorter Powershell equivalent

Expand-Archive -Force C:\path\to\archive.zip C:\where\to\extract\to
| improve this answer | |
  • 1
    What about older windows version? – Anthony Kong Jul 9 '19 at 3:41
  • You just need Powershell v5.0+ – cowlinator Apr 21 at 21:09
15

On Windows 10 build 17063 or later you can use tar.exe (similar to the *nix one). This is also available in the nanoserver docker container

C:\> tar -xf archive.zip
| improve this answer | |
  • 2
    Luckily, it’s bsdtar. Because .zip is not GZip (-z). – Daniel B Aug 20 '19 at 13:27
  • It does work well with .gz and .zip – venimus Aug 21 '19 at 10:03
  • 2
    Yes. Because it ignores the incorrect -z argument and always uses autodetection. – Daniel B Aug 21 '19 at 10:50
  • Thanks, I removed it. I thought that with -z is to call the gzip submodule, which in turn does the autodetect. – venimus Aug 23 '19 at 7:26
3

If you have Windows 10 (and powershell), but still want to unzip from within .bat/.cmd-file (cmd.exe), you can use

powershell -command "Expand-Archive -Force '%~dp0my_zip_file.zip' '%~dp0'"

where my_zip_file.zip is the file to be unzipped and %~dp0 points to the same folder are where the .bat/.cmd-file is (Change the folder, if needed).

| improve this answer | |
2
ZipFile="C:\Users\spvaidya\Music\folder.zip"
ExtractTo="C:\Users\spvaidya\Music\"




'If the extraction location does not exist create it.

Set fso = CreateObject("Scripting.FileSystemObject")

If NOT fso.FolderExists(ExtractTo) Then



 fso.CreateFolder(ExtractTo)

End If

'Extract the contants of the zip file.

set objShell = CreateObject("Shell.Application")

set FilesInZip=objShell.NameSpace(ZipFile).items

objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)

Set fso = Nothing
Set objShell = Nothing

The following vbscript can be saved as file.vbs and then run using batch script like:

file.vbs

save this in .bat file and run it.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.