2012-12-05 89 views
2

我試圖使用PowerShellPowerShell中添加文件到壓縮

我可以創建ZIP文件的文件添加到壓縮文件,但無法工作,如何我的文件添加到它

我「M使用

$zipfilename = 'c:\cwRsync\backup.zip' 
$file = 'c:\cwRsync\backup.log' 
set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18)) 
(dir $zipfilename).IsReadOnly = $false 
$zipfile = (New-Object -ComObject shell.application).NameSpace($zipfilename) 
$zipfile.MoveHere($file.FullName) 

此創建的zip文件,但不添加新的文件

我試過計算器下面的代碼,我發現它的工作原理

$zipfilename = "a.zip" 
set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18)) 
$app = new-object -com shell.application 
$zip = (get-item a.zip).fullname 
$folder = $app.namespace($zip) 
$item = new-item file.txt -itemtype file -value "Mooo" -force 
$folder.copyhere($item.fullname) 

但添加通過PowerShell中創建的文件,而我想補充一個現有的文件

任何幫助,將不勝感激

+0

得到它通過改變$ zipfile.MoveHere($ file.FullName)至$ zipfile.MoveHere($文件)工作,並加入了睡眠1在腳本的末尾,問題似乎是由於我從命令行調用腳本而引起的問題 – mjsolo

+0

http://stackoverflow.com/questions/39496251/how-to-move-a-single-txt-file-to -the-zip-in-powershell-3 – JohnLBevan

回答

1

CopyHere功能只是需要一個字符串,它是通向你的文件。例如:

$folder.copyhere("c:\PathToYourFile\YourFile") 

提示:

Powershell Pack Module有一些有用的工具,其中之一是一個壓縮工具,將你的代碼降低到1線:

Copy-ToZip "c:\PathToYourFile\YourFile" -ZipFile a.zip 
+0

謝謝我會看看Powershell Pack模塊 – mjsolo

+0

我還想讓我的腳本工作 - 如果我使用$ zipfile.MoveHere($文件)它仍然不會沒有工作 – mjsolo

+0

嘗試copy-tozip,它的工作,但有issus與大的zip文件,現在使用7zip從批處理文件 - 像夢一樣工作 – mjsolo

0

我從我的筆記中拉出來。得到它關閉腳本傢伙的網站,也許這將幫助...

$source = "D:\temp\test" 
$destination = "d:\temp\csvdir_Backup.zip" 
If(Test-path $destination) {Remove-item $destination} 
Add-Type -assembly "system.io.compression.filesystem" 
[io.compression.zipfile]::CreateFromDirectory($Source, $destination) 
+4

歡迎來到堆棧溢出!這看起來像是一個嘗試這個讓我知道如何去做的迴應,它是一個評論而不是回答。 –

相關問題