Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to move a single txt file to the zip in powershell 3

Tags:

powershell

I am trying to copy/move one text file to the zip. I don't want to unzip it, copy the file and zip it back. Is there any way we can directly copy or move text file to the zip in powershell. When i am doing it in powershell, it's doing after that when i try to look inside the zip it's saying invalid path.

Powershell commands:

$A = "20160914.4"

New-Item "C:\test\VersionLabel.txt" -ItemType file

$A | Set-Content "C:\test\VersionLabel.txt"

Copy-Item "C:\test\VersionLabel.txt" "C:\test\Abc.zip"  -Force

Error: The compressed folder is invalid

like image 479
Meet101 Avatar asked Sep 14 '16 17:09

Meet101


2 Answers

>= PowerShell 5.0

Per @SonnyPuijk's answer above, use Compress-Archive.

clear-host
[string]$zipFN = 'c:\temp\myZipFile.zip'
[string]$fileToZip = 'c:\temp\myTestFile.dat'
Compress-Archive -Path $fileToZip -Update -DestinationPath $zipFN

< PowerShell 5.0

To add a single file to an existing zip:

clear-host
Add-Type -assembly 'System.IO.Compression'
Add-Type -assembly 'System.IO.Compression.FileSystem'

[string]$zipFN = 'c:\temp\myZipFile.zip'
[string]$fileToZip = 'c:\temp\myTestFile.dat'
[System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile]::Open($zipFN, ([System.IO.Compression.ZipArchiveMode]::Update))
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($ZipFile, $fileToZip, (Split-Path $fileToZip -Leaf))
$ZipFile.Dispose()

To create a single file zip file from scratch:

Same as above, only replace: [System.IO.Compression.ZipArchiveMode]::Update

With: [System.IO.Compression.ZipArchiveMode]::Create

Related Documentation:

  • Compress-Archive: https://technet.microsoft.com/en-us/library/dn841358.aspx
  • CreateEntryFromFile: https://msdn.microsoft.com/en-us/library/hh485720(v=vs.110).aspx
like image 194
JohnLBevan Avatar answered Oct 14 '22 02:10

JohnLBevan


You can use Compress-Archive for this. Copy-Item doesn't support zip files.

If you don't have PowerShell v5 you can use either 7Zip command line or .Net

like image 24
Sonny Puijk Avatar answered Oct 14 '22 02:10

Sonny Puijk