Forum Discussion
Macos compress can't zip a folder.but can zip a file
$compress = @{
Path = "./20230801"
CompressionLevel = "Fastest"
DestinationPath = "./Draft.zip"
}
Compress-Archive @compress
This is a normal "file not found" error, meaning it cannot see the directory you specified.
Be careful when using file paths in .NET as relative paths are not always supported and even when they are, do not always yield expected results.
Try something like this instead (to use the full path to the directory):
[System.IO.Compression.ZipFile]::CreateFromDirectory( (Get-Item -Path ".\NewFolder").FullName , (Join-Path -Path ((Get-Item -Path .).FullName) -ChildPath "forum.zip") , [System.IO.Compression.CompressionLevel]::Fastest , $true );
Cheers,
Lain
- LainRobertsonSilver Contributor
Compress-Archive has a couple of deviations from the underlying .NET class, one of which (in relation to missing hidden files) is mentioned in the documentation:
If you use the underlying .NET class, you get what you expect:
[System.IO.Compression.ZipFile]::CreateFromDirectory("D:\Data\Temp\Forum\NewFolder", "D:\Data\Temp\Forum\forum.zip", [System.IO.Compression.CompressionLevel]::Fastest, $true);
Cheers,
Lain
- SixdogCopper Contributorthank u help very much, but i tried it,it doesn't work,this is the exception
PS /Users/sixdog/Documents/PowerShell> [System.IO.Compression.ZipFile]::CreateFromDirectory("./20230701/", "./dddd.zip", [System.IO.Compression.CompressionLevel]::Fastest, $true);
MethodInvocationException: Exception calling "CreateFromDirectory" with "4" argument(s): "Unable to find the specified file."
PS /Users/sixdog/Documents/PowerShell>- LainRobertsonSilver Contributor
This is a normal "file not found" error, meaning it cannot see the directory you specified.
Be careful when using file paths in .NET as relative paths are not always supported and even when they are, do not always yield expected results.
Try something like this instead (to use the full path to the directory):
[System.IO.Compression.ZipFile]::CreateFromDirectory( (Get-Item -Path ".\NewFolder").FullName , (Join-Path -Path ((Get-Item -Path .).FullName) -ChildPath "forum.zip") , [System.IO.Compression.CompressionLevel]::Fastest , $true );
Cheers,
Lain