Powershell - 修改ZIP存档中的项目

时间:2012-02-27 18:37:08

标签: powershell zip

我读过有关在 Stackoverflow 上提取ZIP存档的信息,这会导致创建以下脚本:

$shell_app=New-Object -com shell.application

Get-ChildItem -name *.zip | ForEach-Object {
$zip_file=$shell_app.NameSpace((Get-Location).path + " \$_")
$destination=$shell_app.NameSpace((Get-Location).path)
$destination.copyhere($zip_file.items())  }

现在我对操作此存档中的项目感兴趣 - 例如在我解压缩所有这些文件之前,我想添加到他们的文件名,存档名称。 当我检查时,我可以通过简单地输入

来获取它(使用.zip extenston我想删除)
  

%zip_file.title

但我不知道如何修改文件名。有人可以提供帮助或提供足够的资源吗?

1 个答案:

答案 0 :(得分:2)

我认为你不能单独使用shell对象。我想你必须提取文件文件,然后使用PowerShell重命名。这是我的测试代码。快速而肮脏,但它可以解决问题。

$zip="c:\work\brain.zip"
$shell_app=New-Object -com shell.application

$zip_file=$shell_app.NameSpace($zip)
$destination=$shell_app.NameSpace("G:\test")
$zip_file.items() | foreach {
  $newname="{0}_{1}" -f $zip_file.Title,$_.name
  Write-Host "Extracting $newname" -ForegroundColor Green
  $destination.copyhere($_)
  $oldfile=Join-path $destination.Self.Path -ChildPath $_.name
  Rename-Item -Path $oldfile -NewName $newname -passthru

}

为什么不为目标中的每个zip文件创建一个子文件夹?