Home > Articles > Operating Systems, Server > Microsoft Windows Desktop
Compressing Files and Folders. You can compress files in special folders that use compressing software to decrease the size of the files they contain. Compressed folders are useful for reducing the file size of one or more large files, thus freeing disk space and reducing the time it takes to transfer files to another PC computer over the. The Compress-Archive cmdlet creates a compressed, or zipped, archive file from one or more specified files or directories. An archive packages multiple files, with optional compression, into a single zipped file for easier distribution and storage. Zipped (compressed) files take up less storage space and can be transferred to other computers more quickly than uncompressed files. In Windows, you work with zipped files and folders in the same way that you work with uncompressed files and folders. Combine several files into a single zipped folder to more easily share a group of files.
␡- Introduction
This chapter is from the book
This chapter is from the book
Introduction
File management is organizing and keeping track of files and folders, helping you stay organized, so information is easily located. A folder is a container for storing programs and files, similar to a folder in a file cabinet. As with a file cabinet, working with poorly managed files is like looking for a needle in a haystack—it is frustrating and time-consuming to search through irrelevant, misnamed, and out-of-date files to find the one you want. Windows allows you to organize folders and files in a file hierarchy, imitating the way you store paper documents in real folders. Just as a file cabinet contains several folders, each containing related documents with dividers grouping related folders together, so the Windows file hierarchy allows you to organize your files in folders, and then place folders in other folders. File Explorer comes with four libraries: Documents, Music, Pictures, and Videos. Libraries are special folders that catalog folders and files in a central location. A library includes and displays folders that are stored in different locations on your PC computer, Homegroup, or network.
Using the file management tools, you can save files in folders with appropriate names for easy identification, quickly and easily create new folders so you can reorganize information and delete files and folders that you no longer need. You can also search for a file when you cannot remember where you stored it, create shortcuts to files and folders for quick and easy access, and even compress files and folders to save space.
A folder can hold different types of files, such as text, spreadsheets, and presentations. The Documents folder is the main location in File Explorer where you store your files. However, there are some special folders, such as Pictures and Music, designed with specialized features to store specific types of files.
-->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. Snapchat chat online. 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.docx
and 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. The Draft.zip
archiveincludes the Reference
root directory, and all its files and subdirectories.
Compress Files And Folders
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. 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. 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 testsub
that 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 thetestlog.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 toCompress-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.
The command updates Draft.Zip
with newer versions of existing files in the C:Reference
directory 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.
Compress Files And Folders
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 |
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.
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 |
Convert wav to jpg. 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 |
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.
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. Upload android contacts to icloud.