找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 2711|回复: 6

[文本处理] 求助批处理从压缩文件提取图片放到Excel里面

[复制链接]
发表于 2025-8-21 23:53:55 | 显示全部楼层 |阅读模式
求助各位大神,我有很多的压缩文件,几万个,里面有很多图片,什么能把压缩文件里面的图片提取出来放到Excel里面

样本:
ABC.ZIP文件   ,CDE.ZIP文件。。。。   提取里面固定名称的图片,放置到EXCEL的同一列里面

转换后的EXCEL格式样子,

ABC    图片
CDE    图片


发表于 2025-8-22 08:28:42 | 显示全部楼层
回复 1# 司马光2008


    请把样本上传到网盘我试试
 楼主| 发表于 2025-8-23 01:34:49 | 显示全部楼层
放到百度网盘中,链接:https://pan.baidu.com/s/1CBjXR_MYJ9494K3wWtMMZA
提取码:4p0v
发表于 2025-8-23 16:03:17 | 显示全部楼层
图片大小怎么处理?
 楼主| 发表于 2025-8-24 00:17:09 | 显示全部楼层
压缩到EXCEL一个格中,只要图片不失真就行
发表于 2025-8-24 04:49:54 | 显示全部楼层
丢给AI写
发表于 2025-8-24 15:54:48 | 显示全部楼层
本帖最后由 czjt1234 于 2025-8-24 19:39 编辑

vbs
  1. Option Explicit
  2. Dim oFSO, oWshShell, oShell, oExcel, oWorksheet, temp, s, n, i

  3. Const zipFolder = "."             '当前路径,可自定义
  4. Const jpgFile   = "西红柿.jpg"
  5. Const ExcelFile = "1.xlsx"        '要求文件已存在
  6. Const Width     = 30              '图片的宽
  7. Const Height    = 30              '图片的高

  8. Set oFSO      = CreateObject("Scripting.FileSystemObject")
  9. Set oWshShell = CreateObject("WScript.Shell")
  10. Set oShell    = CreateObject("Shell.Application")
  11. Set oExcel    = CreateObject("Excel.Application")

  12. s = oFSO.GetParentFolderName(WScript.ScriptFullname)
  13. oWshShell.CurrentDirectory = s
  14. i = oFSO.GetAbsolutePathName(zipFolder)
  15. s = oFSO.GetAbsolutePathName(ExcelFile)
  16. Set oWorksheet = oExcel.Workbooks.Open(s).Sheets(1)
  17. oWorksheet.Columns("B").ColumnWidth = Width
  18. s = oWshShell.ExpandEnvironmentStrings("%temp%")
  19. oWshShell.CurrentDirectory = s
  20. temp = s & oFSO.GetTempName()
  21. s = ""
  22. Call EnumZIP(i)
  23. n = 1
  24. For Each i In Split(Left(s, Len(s) - 2), vbCrLf)
  25.     oFSO.CreateFolder temp
  26.     oShell.NameSpace(temp).CopyHere oShell.NameSpace(i).Items
  27.     s = ""
  28.     Call EnumJPG(temp)
  29.     If s <> "" Then Call toExcel(s, oFSO.GetBaseName(i))
  30.     oFSO.DeleteFolder temp
  31. Next
  32. oExcel.Visible = True

  33. Sub toExcel(ByVal jpg, ByVal i)
  34.     Dim oPicture
  35.     oWorksheet.Rows(n).RowHeight = Height
  36.     Set oPicture = oWorksheet.Pictures.Insert(jpg)
  37.     oPicture.Top = oWorksheet.Range("B" & n).Top
  38.     oPicture.Left = oWorksheet.Range("B" & n).Left
  39.     oPicture.Width = Width
  40.     oPicture.Height = Height
  41.     oWorksheet.Range("A" & n) = i
  42.     n = n + 1
  43. End Sub

  44. Sub EnumZIP(ByVal folderPath)
  45.     Dim oFile, oFolder
  46.     On Error Resume Next
  47.     For Each oFile In oFSO.GetFolder(folderPath).Files
  48.         If LCase(oFSO.GetExtensionName(oFile.Path)) = "zip" Then
  49.             s = s & oFile.Path & vbCrLf
  50.         End If
  51.     Next
  52.     For Each oFolder In oFSO.GetFolder(folderPath).SubFolders
  53.         Call EnumZIP(oFolder.Path)
  54.     Next
  55. End Sub

  56. Sub EnumJPG(ByVal folderPath)
  57.     Dim oFile, oFolder
  58.     For Each oFile In oFSO.GetFolder(folderPath).Files
  59.         If LCase(oFile.Name) = LCase(jpgFile) Then
  60.             s = oFile.Path
  61.         End If
  62.     Next
  63.     For Each oFolder In oFSO.GetFolder(folderPath).SubFolders
  64.         Call EnumJPG(oFolder.Path)
  65.     Next
  66. End Sub
复制代码
只支持 .zip 文件,如果有 .rar 文件需要改用 winrar.exe 或 7z.exe 解压
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:06 , Processed in 0.018226 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表