且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用Powershell在子文件夹中编辑zip文件内容

更新时间:2023-12-04 21:28:34

这不是很复杂。下一步,访问和更新zip文件中的文件需要做什么?使用PowerShell v3.0或更高版本(以及标准的.NET System.IO库)更加容易。

This is not very complicated. Using PowerShell v3.0 or higher (and the standard .NET System.IO libraries) is easier.

# Parameters
$zipfileName = "E:\temp\WebsitePackage.zip"
$fileToEdit = "robots.txt"
$contents = "User-agent: *
Disallow: /"

# Open zip and find the particular file (assumes only one inside the Zip file)
Add-Type -assembly  System.IO.Compression.FileSystem
$zip =  [System.IO.Compression.ZipFile]::Open($zipfileName,"Update")
$robotsFile = $zip.Entries.Where({$_.name -eq $fileToEdit})

# Update the contents of the file
$desiredFile = [System.IO.StreamWriter]($robotsFile).Open()
$desiredFile.BaseStream.SetLength(0)
$desiredFile.Write($contents)
$desiredFile.Flush()
$desiredFile.Close()

# Write the changes and close the zip file
$zip.Dispose()
Write-Host "zip file updated"

下一个问题是如何快速检查更改是否成功?简单修改脚本,即可读取Zip文件中的文件内容:

The next problem is how to quickly check that your changes were successful? A simple adaptation of the script allows you to read the contents of file inside a Zip file:

# Parameters
$zipfileName = "E:\temp\WebsitePackage.zip"
$fileToRead = "robots.txt"

# Open zip and find the particular file (assumes only one inside the Zip file)
Add-Type -assembly  System.IO.Compression.FileSystem
$zip =  [System.IO.Compression.ZipFile]::Open($zipfileName,"Update")
$robotsFile = $zip.Entries.Where({$_.name -eq $fileToRead})

# Read the contents of the file
$desiredFile = [System.IO.StreamReader]($robotsFile).Open()
$text = $desiredFile.ReadToEnd()

# Output the contents
$text

$desiredFile.Close()
$desiredFile.Dispose()

# Close the zip file
$zip.Dispose()

本文提供了有用的背景材料: https://mcpmag.c om / articles / 2014/09/29 / file-frontier-part-6.aspx

There is useful background material at this article: https://mcpmag.com/articles/2014/09/29/file-frontier-part-6.aspx