gpt4 book ai didi

PowerShell-将文件添加到 .zip 存档,需要保留目录结构

转载 作者:行者123 更新时间:2023-12-01 15:49:23 24 4
gpt4 key购买 nike

我正在使用以下函数将文件添加到 .zip 存档中,该存档工作正常,但我需要能够包含某些文件的父目录。有任何想法吗?

function Add-ZipFile
{
param([string]$zipfilename,
[string]$filter)

if(-not (test-path($zipfilename)))
{
set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
(dir $zipfilename).IsReadOnly = $false
}

$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$files = get-childitem -Filter "$filter" -recurse
foreach($file in $files)
{
$zipPackage.CopyHere($file.FullName)
Start-sleep -milliseconds 500
}
}

最佳答案

根据我的知识,您不能使用 shell.application 将一个特定文件添加到 zip 文件中。并保存其文件夹结构。
你有两个选择:

  • 像脚本一样在平面结构中添加单个文件
  • 添加一个文件夹及其所有内容(这将保存结构文件夹
    使用添加为父文件夹的文件夹):

  • $Directory = Get-Item .

    $ParentDirectory = Get-Item ..

    $ZipFileName = $ParentDirectory.FullName + $Directory.Name + ".zip"

    if (test-path $ZipFileName) {

    echo "Zip file already exists at $ZipFileName"

    return

    }

    set-content $ZipFileName ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))

    (dir $ZipFileName).IsReadOnly = $false

    $ZipFile = (new-object -com shell.application).NameSpace($ZipFileName)

    $ZipFile.CopyHere($Directory.FullName)

    正如我对您的问题的评论一样,我建议使用更安全的方式以编程方式创建 zip 文件,就像 DotNetZip (IMO) 一样。

    关于PowerShell-将文件添加到 .zip 存档,需要保留目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10883461/

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