2012-12-05 88 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

欢迎来到堆栈溢出!这看起来像是一个尝试这个让我知道如何去做的回应,它是一个评论而不是回答。 –

相关问题