我正在尝试编写PowerShell脚本来更新zip文件中的文件,因为我需要为多个zip文件自动执行此操作。我的问题是,我需要更新的文件位于zip文件中的几个目录中,例如:
myZip.zip /目录2/文件
我尝试使用命令,例如
Compress-Archive -Path .\file.txt -Update -DestinationPath .\myZip.zip
但是,当我运行该命令时,文件被添加到zip文件的根目录中,而不是我需要的dir 1/dir 2/目录中。
这可能吗?
我正在尝试编写PowerShell脚本来更新zip文件中的文件,因为我需要为多个zip文件自动执行此操作。我的问题是,我需要更新的文件位于zip文件中的几个目录中,例如:
myZip.zip /目录2/文件
我尝试使用命令,例如
Compress-Archive -Path .\file.txt -Update -DestinationPath .\myZip.zip
但是,当我运行该命令时,文件被添加到zip文件的根目录中,而不是我需要的dir 1/dir 2/目录中。
这可能吗?
2条答案
按热度按时间umuewwlo1#
确定-Path必须引用与zip文件中相同的目录结构。
我的测试zip具有以下目录结构:
我的参考目录定义为:
我就可以跑了
Compress-Archive -Path .\dir1 -DestinationPath .\myZip.zip -Update
这会将文件放到正确的目录中。
感谢@SantiagoSquarzon和@metablaster提供的相关服务
yjghlzjz2#
这就是如何直接使用.NET API更新
ZipArchiveEntry
的方法,此方法不需要外部应用程序或Compress-Archive
。它也不需要模拟Zip结构来定位正确的文件,相反,它需要您通过传递正确的相对路径(dir1/dir2/dir3/myFile.txt
)作为.GetEntry(..)
的参数来定位正确的Zip条目。