Make Zip Archive

broken image


-->

Zip files are single files that contain one or more compressed files. People zip files to keep related groups of files together and to make files smaller so they are easier and faster to share by email or via the web. Zip files are ideal for archiving since they save storage space. And, they are also useful for securing data using encryption. A zip file is a way of grouping, or archiving, multiple files so they act like one file.For example, let's say you want to email a folder of Word documents to someone. You could attach each file individually, but it would take a long time—especially if there are a lot of documents.

Creates a compressed archive, or zipped file, from specified files and directories.

Syntax

Description

The Compress-Archive cmdlet creates a compressed, or zipped, archive file from one or morespecified files or directories. An archive packages multiple files, with optional compression, intoa single zipped file for easier distribution and storage. An archive file can be compressed by usingthe compression algorithm specified by the CompressionLevel parameter.

The Compress-Archive cmdlet uses the Microsoft .NET APISystem.IO.Compression.ZipArchive to compress files.The maximum file size is 2 GB because there's a limitation of the underlying API.

Some examples use splatting to reduce the line length of the code samples. For more information, seeabout_Splatting.

Examples

Example 1: Compress files to create an archive file

This example compresses files from different directories and creates an archive file. A wildcard isused to get all files with a particular file extension. There's no directory structure in thearchive file because the Path only specifies file names.

The Path parameter accepts specific file names and file names with wildcards, *.vsd. ThePath uses a comma-separated list to get files from different directories. The compression levelis Fastest to reduce processing time. The DestinationPath parameter specifies the locationfor the Draft.zip file. The Draft.zip file contains Draftdoc.docx and all the files with a.vsd extension.

Example 2: Compress files using a LiteralPath

This example compresses specific named files and creates a new archive file. There's no directorystructure in the archive file because the Path only specifies file names.

Absolute path and file names are used because the LiteralPath parameter doesn't acceptwildcards. The Path uses a comma-separated list to get files from different directories. Thecompression level is Fastest to reduce processing time. The DestinationPath parameterspecifies the location for the Draft.zip file. The Draft.zip file only contains Draftdoc.docxand diagram2.vsd.

Example 3: Compress a directory that includes the root directory

This example compresses a directory and creates an archive file that includes the rootdirectory, and all its files and subdirectories. The archive file has a directory structure becausethe Path specifies a root directory.

Compress-Archive uses the Path parameter to specify the root directory, C:Reference. TheDestinationPath parameter specifies the location for the archive file. Fnaf last night. The Draft.zip archiveincludes the Reference root directory, and all its files and subdirectories.

Example 4: Compress a directory that excludes the root directory

This example compresses a directory and creates an archive file that excludes the root directorybecause the Path uses an asterisk (*) wildcard. The archive contains a directory structurethat contains the root directory's files and subdirectories.

Compress-Archive uses the Path parameter to specify the root directory, C:Reference with anasterisk (*) wildcard. The DestinationPath parameter specifies the location for the archivefile. The Draft.zip archive contains the root directory's files and subdirectories. TheReference root directory is excluded from the archive.

Example 5: Compress only the files in a root directory

This example compresses only the files in a root directory and creates an archive file. There's nodirectory structure in the archive because only files are compressed.

Compress-Archive uses the Path parameter to specify the root directory, C:Reference with astar-dot-star (*.*) wildcard. The DestinationPath parameter specifies the location for thearchive file. The Draft.zip archive only contains the Reference root directory's files and theroot directory is excluded.

Example 6: Use the pipeline to archive files

This example sends files down the pipeline to create an archive. Macintosh hd other storage. There's no directory structure inthe archive file because the Path only specifies file names.

Get-ChildItem uses the Path parameter to specify two files from different directories. Eachfile is represented by a FileInfo object and is sent down the pipeline to Compress-Archive.The two specified files are archived in PipelineFiles.zip.

Example 7: Use the pipeline to archive a directory

This example sends a directory down the pipeline to create an archive. Logitech c270 hackintosh. Files are sent asFileInfo objects and directories as DirectoryInfo objects. The archive's directory structuredoesn't include the root directory, but its files and subdirectories are included in the archive.

Get-ChildItem uses the Path parameter to specify the C:LogFiles root directory. EachFileInfo and DirectoryInfo object is sent down the pipeline.

Compress-Archive adds each object to the PipelineDir.zip archive. The Path parameter isn'tspecified because the pipeline objects are received into parameter position 0.

Example 8: How recursion can affect archives

This example shows how recursion can duplicate files in your archive. For example, if you useGet-ChildItem with the Recurse parameter. As recursion processes, each FileInfo andDirectoryInfo object is sent down the pipeline and added to the archive.

The C:TestLog directory doesn't contain any files. It does contain a subdirectory named testsubthat contains the testlog.txt file.

Get-ChildItem uses the Path parameter to specify the root directory, C:TestLog. TheRecurse parameter processes the files and directories. A DirectoryInfo object is created fortestsub and a FileInfo object testlog.txt.

Each object is sent down the pipeline to Compress-Archive. The DestinationPath specifies thelocation for the archive file. The Path parameter isn't specified because the pipeline objectsare received into parameter position 0.

The following summary describes the PipelineRecurse.zip archive's contents that contains aduplicate file:

  • The DirectoryInfo object creates the testsub directory and contains the testlog.txt file,which reflects the original directory structure.
  • The FileInfo object creates a duplicate testlog.txt in the archive's root. The duplicatefile is created because recursion sent a file object to Compress-Archive. This behavior isexpected because each object sent down the pipeline is added to the archive.

Example 9: Update an existing archive file

This example updates an existing archive file, Draft.Zip, in the C:Archives directory. In thisexample, the existing archive file contains the root directory, and its files and subdirectories.

Linux Make Zip Archive

The command updates Draft.Zip with newer versions of existing files in the C:Referencedirectory and its subdirectories. And, new files that were added to C:Reference or itssubdirectories are included in the updated Draft.Zip archive.

Parameters

Specifies how much compression to apply when you're creating the archive file. Faster compressionrequires less time to create the file, but can result in larger file sizes.

If this parameter isn't specified, the command uses the default value, Optimal.

The following are the acceptable values for this parameter:

  • Fastest. Use the fastest compression method available to reduce processing time. Fastercompression can result in larger file sizes.
  • NoCompression. Doesn't compress the source files.
  • Optimal. Processing time is dependent on file size.
Type:String
Accepted values:Optimal, NoCompression, Fastest
Position:Named
Default value:Optimal
Accept pipeline input:False
Accept wildcard characters:False

Prompts you for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

This parameter is required and specifies the path to the archive output file. TheDestinationPath should include the name of the zipped file, and either the absolute or relativepath to the zipped file.

If the file name in DestinationPath doesn't have a .zip file name extension, the cmdlet addsthe .zip file name extension.

Type:String
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
Make

Forces the command to run without asking for user confirmation.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Specifies the path or paths to the files that you want to add to the archive zipped file. Unlike thePath parameter, the value of LiteralPath is used exactly as it's typed. No characters areinterpreted as wildcards. If the path includes escape characters, enclose each escape character insingle quotation marks, to instruct PowerShell not to interpret any characters as escape sequences.To specify multiple paths, and include files in multiple locations in your output zipped file, usecommas to separate the paths.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

Causes the cmdlet to output a file object representing the archive file created.

This parameter was introduced in PowerShell 6.0.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Specifies the path or paths to the files that you want to add to the archive zipped file. To specifymultiple paths, and include files in multiple locations, use commas to separate the paths.

Archive

Forces the command to run without asking for user confirmation.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Specifies the path or paths to the files that you want to add to the archive zipped file. Unlike thePath parameter, the value of LiteralPath is used exactly as it's typed. No characters areinterpreted as wildcards. If the path includes escape characters, enclose each escape character insingle quotation marks, to instruct PowerShell not to interpret any characters as escape sequences.To specify multiple paths, and include files in multiple locations in your output zipped file, usecommas to separate the paths.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

Causes the cmdlet to output a file object representing the archive file created.

This parameter was introduced in PowerShell 6.0.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Specifies the path or paths to the files that you want to add to the archive zipped file. To specifymultiple paths, and include files in multiple locations, use commas to separate the paths.

This parameter accepts wildcard characters. Wildcard characters allow you to add all files in adirectory to your archive file.

Using wildcards with a root directory affects the archive's contents:

  • To create an archive that includes the root directory, and all its files and subdirectories,specify the root directory in the Path without wildcards. For example: -Path C:Reference
  • To create an archive that excludes the root directory, but zips all its files andsubdirectories, use the asterisk (*) wildcard. For example: -Path C:Reference*
  • To create an archive that only zips the files in the root directory, use the star-dot-star(*.*) wildcard. Subdirectories of the root aren't included in the archive. For example:-Path C:Reference*.*
Type:String[]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:True

Updates the specified archive by replacing older file versions in the archive with newer fileversions that have the same names. You can also add this parameter to add files to an existingarchive.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Shows what would happen if the cmdlet runs. The cmdlet isn't run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Linux Make Zip Archive

Inputs

You can pipe a string that contains a path to one or more files.

Outputs

The cmdlet only returns a FileInfo object when you use the PassThru parameter.

Making Zip Archive

Notes

Using recursion and sending objects down the pipeline can duplicate files in your archive. Forexample, if you use Get-ChildItem with the Recurse parameter, each FileInfo andDirectoryInfo object that's sent down the pipeline is added to the archive.

The ZIP file specification does notspecify a standard way of encoding filenames that contain non-ASCII characters. TheCompress-Archive cmdlet uses UTF-8 encoding. Other ZIP archive tools may use a different encodingscheme. When extracting files with filenames not stored using UTF-8 encoding, Expand-Archive usesthe raw value found in the archive. This can result in a filename that is different than the sourcefilename stored in the archive.

Related Links





broken image