You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中借助WinZip解压带密码的压缩文件

在R中利用WinZip自动化处理带密码的加密压缩文件(含XML)

由于你的环境仅支持WinZip,以下是基于WinZip命令行工具的可行解决方案:

前提准备

确保WinZip安装了命令行支持组件(联系IT部门获取安装权限,组织内使用WinZip通常可申请),找到命令行解压工具wzunzip.exe的路径(默认一般为C:\Program Files\WinZip\wzunzip.exe)。

具体实现代码

# 配置参数
zip_file <- "C:/your/path/encrypted_file.zip"  # 目标压缩文件路径
temp_folder <- tempdir()  # 使用R临时目录,自动清理无需手动删除
zip_password <- "your_secure_password"
wzunzip_path <- "C:/Program Files/WinZip/wzunzip.exe"  # 确认路径正确

# 构造WinZip解压命令
# -P参数后直接跟密码,路径用双引号包裹避免空格问题
unzip_cmd <- sprintf('"%s" -P"%s" "%s" "%s"', 
                     wzunzip_path, zip_password, zip_file, temp_folder)

# 执行解压命令
cmd_result <- system(unzip_cmd, intern = TRUE)

# 验证解压结果并读取XML
if (length(cmd_result) == 0 || any(grepl("Successfully extracted", cmd_result))) {
  # 定位解压后的XML文件(假设压缩包内仅一个XML)
  xml_path <- list.files(temp_folder, pattern = "\\.xml$", full.names = TRUE)[1]
  
  # 读取XML内容
  library(xml2)
  xml_data <- read_xml(xml_path)
  
  # 后续业务处理逻辑...
} else {
  stop("解压失败:", paste(cmd_result, collapse = "\n"))
}

注意事项

  • 若密码包含空格或特殊字符,必须用双引号将密码包裹(如-P"my pass!123")
  • 若wzunzip.exe路径与默认不同,需替换为实际安装路径
  • 临时目录tempdir()会在R会话结束后自动删除,无需手动清理文件

内容的提问来源于stack exchange,提问作者Mrob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:02:05