gpt4 book ai didi

powershell - 如何在Powershell中使用DotNetZip仅压缩文件而不压缩完整路径层次结构?

转载 作者:行者123 更新时间:2023-12-03 14:48:29 28 4
gpt4 key购买 nike

我正在尝试使用DotNetZip和powershell压缩日志。这些文件位于C:\ user \ temp \ logs中。当我遍历目录中的日志并将它们添加到zip文件时,如果只需要日志文件,则会得到文件夹层次结构和日志文件。

因此,zip最终包含:

-user
└temp
└logs
└log1.log
log2.log
log3.log

当我希望包含的zip文件是:
log1.log
log2.log
log3.log

这是我要测试的脚本:
[System.Reflection.Assembly]::LoadFrom("c:\\\User\\bin\\Ionic.Zip.dll");
$zipfile = new-object Ionic.Zip.ZipFile("C:\user\temp\logs\TestZIP.zip");

$directory = "C:\user\temp\logs\"
$children = get-childitem -path $directory
foreach ($o in $children)
{
if($o.Name.EndsWith(".log")){
$e = $zipfile.AddFile($o.FullName)
}
}
$zipfile.Save()
$zipfile.Dispose()

最佳答案

有一个AddFile,您可以在其中覆盖文件中的文件名:

public ZipEntry AddFile(
string fileName,
string directoryPathInArchive
)

fileName (String)

The name of the file to add. The name of the file may be a relative path or a fully-qualified path.

directoryPathInArchive (String)

Specifies a directory path to use to override any path in the fileName. This path may, or may not, correspond to a real directory in the current filesystem. If the files within the zip are later extracted, this is the path used for the extracted file. Passing null (Nothing in VB) will use the path on the fileName, if any. Passing the empty string ("") will insert the item at the root path within the archive.



试试这个:
 $e = $zipfile.AddFile($o.FullName, $o.Name)

这也可能满足您的要求:
 $e = $zipfile.AddFile($o.FullName, "")

关于powershell - 如何在Powershell中使用DotNetZip仅压缩文件而不压缩完整路径层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6202267/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com