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

如何用VBScript不提取文件读取.zip内容并将文件名输出到CSV?

VBScript处理ZIP文件:保存文件名到CSV及免提取读取内容

一、修改代码将文件名保存到CSV文件

原代码仅输出文件名,要写入CSV需借助FileSystemObject实现文件操作,同时要处理文件名中的特殊字符(比如逗号)避免破坏CSV格式。修改后的代码如下:

Dim objSA, objSource, item, objFSO, objFile
Dim pathToZipFile, outputCsvPath

' 替换为你的ZIP文件路径和CSV输出路径
pathToZipFile = "C:\your\path\file.zip"
outputCsvPath = "C:\your\path\zip_files.csv"

Set objSA = CreateObject("Shell.Application")
Set objSource = objSA.NameSpace(pathToZipFile).Items()

' 创建文件系统对象用于写入CSV
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 第三个参数设为True,输出UTF-8编码避免中文乱码
Set objFile = objFSO.CreateTextFile(outputCsvPath, True, True)

' 写入CSV表头
objFile.WriteLine """文件名"""

' 循环写入每个文件名,用双引号包裹处理特殊字符
For Each item in objSource
    objFile.WriteLine """" & item.Name & """"
Next

' 释放资源
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
Set objSource = Nothing
Set objSA = Nothing

WScript.Echo "已成功保存文件名到 " & outputCsvPath

二、不提取文件读取ZIP内容的原理

你当前使用的Shell.Application是Windows Shell内置的接口,它能把ZIP文件当作虚拟文件夹直接访问,无需实际解压:

  • Windows Shell原生支持ZIP格式解析,会自动读取ZIP的目录结构
  • 通过objSA.NameSpace(pathToZipFile)获取这个虚拟文件夹对象
  • 调用Items()方法就能获取ZIP内所有文件、子文件夹的集合

除了文件名,还能读取文件的大小、修改时间等属性,示例代码:

Dim objSA, objSource, item, objZipFolder
Dim pathToZipFile

pathToZipFile = "C:\your\path\file.zip"

Set objSA = CreateObject("Shell.Application")
Set objZipFolder = objSA.NameSpace(pathToZipFile)
Set objSource = objZipFolder.Items()

For Each item in objSource
    WScript.Echo "文件名: " & item.Name
    WScript.Echo "文件大小: " & objZipFolder.GetDetailsOf(item, 1) & " 字节"
    WScript.Echo "修改时间: " & objZipFolder.GetDetailsOf(item, 3)
    WScript.Echo "-------------------------"
Next

GetDetailsOf方法的第二个参数是属性索引,常用索引:

  • 1:文件大小
  • 3:修改日期
  • 4:创建日期
  • 11:文件类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:13:12