2012-02-27 61 views
-1

我读到了解压ZIP档案#1导致创建以下脚本:PowerShell的 - 在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()) } 

现在我很感兴趣,在这个档案中的项目操作 - 之前例如我解压所有这些文件,我想添加到他们的文件名,档案的名称。 AS我检查,我可以简单地输入

%zip_file.title

得到它(与我想删除的.zip extenston),但我不知道如何修改文件名。任何人都可以帮忙或提供足够的资源吗?

回答

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 

} 

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