1

我想仅使用它们的相对路径将一些选定的文件夹压缩到存档中。

其中一些具有相同的文件夹名称(所有发布文件夹,所有调试文件夹)。

过滤工作正常,我在 get-children 命令之前调用了 set-location 。

做这项工作最简单的方法是什么?

我真的必须实施这样的事情吗

foreach ($o in $children)
{   $relPath = $o.FullName.Substring(subPath.Length);
    $relPath = $relPath.Substring(0, relPath.LastIndexOf(@"\"));
    zip.AddFolder($o.Name, $relPath);
} 

有人可以给我一个例子吗?

谢谢

4

2 回答 2

0

当我需要处理相对路径时,我会这样做:

$basePath = "C:\MyBasePath"
$newBasePAth = "C:\NewBasePath"

$files = Get-ChildItem $basePath
$newFileNames = foreach ($f in $files) {
    $f.Fullname.Replace($basePath, $newBasePath)
}

确保您使用的斜线模式在 $basePath 和 $newBasePath 中是相同的(使用 .Trim() 确保)

希望这可以帮助

于 2011-11-21T04:41:12.327 回答
0

我终于实现了这个,它适用于相对路径:

function ZipUp-Files ( $mychildren )
{
  foreach ($o in $mychildren) 
  {
        $e= $zipfile.AddDirectory($o.FullName,$o.fullname.substring($pwd.path.length));
  }
}

$children =get-childitem -recurse -force | where-object {$_.psiscontainer} | where {$_.name -match $teststring} 

[System.Reflection.Assembly]::LoadFrom("C:\dotNetZip\zip-v1.9\Release\Ionic.Zip.dll");
$zipfile =  new-object Ionic.Zip.ZipFile($ziptarget);
$zipfile.UseZip64WhenSaving= [Ionic.Zip.Zip64Option]::Always
$zipfile.MaxOutPutSegmentSize=734003200
ZipUp-Files $children
$zipfile.Save("c:\temp\arc_rel.zip")
$zipfile.Dispose()
于 2011-11-22T12:48:20.423 回答