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

2024-03-11

我正在尝试更新从 Excel 文档创建的 zip 文件的内容。我想替换\zipfile\xl\connections.xml 的一些内容。

该部分脚本将列出 zip 文件的内容:

$shell_app = new-object -com shell.application
$zip = "$destination\exceltemplates\Templates\Template1.xlsx.zip"
$zip_file=$shell_app.NameSpace($zip)
$zip_file.Items() | Select Path

但我尝试过的每种更新方法都会产生错误。访问和更新 zip 文件中的文件下一步需要做什么?


这并不是很复杂。使用 PowerShell v3.0 或更高版本(以及标准 .NET System.IO 库)更容易。

# 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 文件内的文件内容:

# 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.com/articles/2014/09/29/file-frontier-part-6.aspx https://mcpmag.com/articles/2014/09/29/file-frontier-part-6.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Powershell 编辑子文件夹中的 zip 文件内容 的相关文章

随机推荐

  • 在同一事务中插入和删除?

    我有一个包含一些数据的 Temp Table 根据 Temp Table 中的数据 我将从其他表中删除相关行 然后将 Temp table 中的所有数据插入到 table1 中 就像下面的例子一样 我可以以什么方式在 Server2 Tab
  • 如何使用 SSH 在另一台服务器上运行 PHP 中的 CLI 命令?

    我正在尝试在 PHP 中运行 CLI 命令 但在不同的服务器上 为了在另一台服务器上运行命令 我使用的是linuxssh命令 为了在 PHP 中运行 CLI 命令 我使用exec 这有效 output exec cut d f1 etc p
  • 虽然places.getLatLng()返回null,但places.getName()不返回null

    我一直在尝试从自动完成中单击一个位置后获取经纬度 奇怪的是places getName 工作正常但是place getLatLng 返回空值 我应该怎么做才能解决这个问题我是谷歌地图和地点 API 的新手 protected void on
  • 使用 launch4j 和 maven 包装 java 命令行应用程序

    我想使用 maven 和 launch4j 将基于 java 的命令行应用程序及其所有依赖项包装到单个 exe 文件中 现在我已经阅读了所有类似的问题 比如this one https stackoverflow com questions
  • 更改 Typescript 映射类型中的属性名称

    我有一个 Typescript 对象的集合 如下所示 SomeData prop1 string prop2 number 我需要最终得到一些如下所示的对象 type SomeMoreData prop1Change string prop
  • C# 字符串大于或等于代码字符串

    我试图让我的代码能够比较字符串是否大于或小于 10 但它无法正常工作 即使该值小于 10 它也会写入 10 或更多 int result string1 CompareTo 10 if result lt 0 Console WriteLi
  • 设置 UILocalNotification 的超时时间(一段时间后将其从锁屏和通知中心删除)

    我想设置一个UILocalNotification五分钟后 它将从锁定屏幕和通知中心消失 如果用户不点击它 我可以设置通知超时吗 或者也许会触发另一个通知来删除它 我相信 Facebook 是通过发送无声推送通知 http www g8pr
  • 正则表达式和冒号 (:)

    我有以下代码 这个想法是检测整个单词 bool contains Regex IsMatch Hello1 Hello2 bHello b yields false bool contains Regex IsMatch Hello Hel
  • 如何对 ObservableCollection 进行排序? [复制]

    这个问题在这里已经有答案了 我试过了 Persons from i in Persons orderby i Age select i 但我无法转换 LinqsSystem Linq IOrderedEnumerable to Observ
  • 减少玻璃鱼原木的线宽

    有谁知道如何减少玻璃鱼原木上每条线的宽度 它似乎包含很多我不需要的信息 下面是一行的示例 2012 03 04T16 00 09 537 0000 INFO oracle glassfish3 1 javax enterprise syst
  • Google 跟踪代码管理器不跟踪图像和图标上的链接点击

    在 Google 跟踪代码管理器中 我将其设置为跟踪包含特定类的元素的点击数据 并在 Google Analytics 中记录事件 它似乎适用于文本链接 但如果链接内有另一个用于图像 图标等的标签 我就会遇到问题 例如 以下内容可以正常工作
  • 前端计算价格不安全?

    我想知道是否可以操纵在前端完成的价格计算 我读了很多关于 JavaScript 价格计算器的文章 其中的业务逻辑仅在客户端 但对安全性却一无所知 考虑以下场景 React 应用程序有一个组件 表单 它根据其子组件 表单输入 的状态 用户交互
  • 请求映射中的双星号

    请求映射中出现双星号意味着什么 例如 RequestMapping value welcome method RequestMethod GET public ModelAndView welcomePage 一般来说 星号 通配符角色 意
  • DIO 响应解码问题

    我在用Dio为了使HTTP request var dio Dio var response await dio get URL final responseBody json decode response data final stat
  • 如何使用 Android 中的加速度计值计算特定轴的旋转速率

    我正在开发一个简单的游戏 其中角色仅沿 Y 轴上下移动 目前我正在使用加速度计读数来更改角色的 Y 速度 游戏运行良好 但最大的问题是你必须保持设备水平才能正常玩游戏 我真正想要的是仅当沿 Y 轴的旋转速率发生变化时才更改角色的 Y 速度
  • Azure SQL 频繁连接超时

    我们在 Azure 上运行一个 Web 应用程序 2 个实例 由 SQL Azure 数据库支持 在任何给定时间都有 50 150 个用户使用该网站 数据库以 S2 性能级别运行 DTU 平均约为 20 然而 每天都有几次我的日志中突然出现
  • 缓存从 pcap 捕获的数据包

    这是对此的后续问题 重建数据包以通过 pcap 注入 https stackoverflow com questions 8193281 rebuilding a packet to inject via pcap 我想要实现的目标 fun
  • 使用 LINQ 进行高效图遍历 - 消除递归

    今天我打算实现一种方法来遍历任意深度的图并将其展平为单个可枚举 相反 我先做了一些搜索 发现了这个 public static IEnumerable
  • 为什么使用 `<<-` 会让人皱眉,我该如何避免它?

    我关注了讨论HERE https stackoverflow com questions 9730651 how to avoid by using assign我很好奇为什么使用 lt lt 在R中皱起眉头 这会引起什么样的混乱呢 我还想
  • 使用 Powershell 编辑子文件夹中的 zip 文件内容

    我正在尝试更新从 Excel 文档创建的 zip 文件的内容 我想替换 zipfile xl connections xml 的一些内容 该部分脚本将列出 zip 文件的内容 shell app new object com shell a