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

[文件操作] [已解决]批处理如何提取文件名并将之输出到EXCEL中生成三列?

[复制链接]
发表于 2015-1-18 17:13:24 | 显示全部楼层 |阅读模式
有文件夹下有很多这个格式命名的图片,求大神批处理提取文件名,并将之输出到EXCEL中 生成三列。格式大概如下分别是
结果:
aal  ,    -600.652 ,-63.372;
cal ,    -80.605,  -263.32;
文件名:
1abc123352aal_1440_0585_-600.625_-63.372_pad.jpg
1abD123352cal_1440_0585_-80.605_-263.32_pad.jpg

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-1-18 18:56:40 | 显示全部楼层
  1. @Echo Off
  2. SetLocal  EnableDelayedExpansion
  3. (For /F "Delims=_ Tokens=1,4,5" %%a In ('Dir /B *.jpg') Do (
  4.   Set C1=%%a            
  5.   Set C2=%%b            
  6.   Set C3=%%c            
  7.   Echo !C1:~10,9! !C2:~0,9! !C3:~0,9!
  8. ))>list.txt
  9. start TXT2EXCEL.vbs
复制代码
不会用vbs,只好这样了
  1. Call Txt2Excel

  2. Sub Txt2Excel
  3. Const FsoForReading         = 1        ' 打开一个只读文件,不能对此文件进行写操作。   
  4. Const FsoForWriting         = 2        ' 打开一个用于写操作的文件。如果和此文件同名的文件已存在,则覆盖以前内容。   
  5. Const FsoForAppending        = 8        ' 打开一个文件并写到文件的尾部。   

  6. '        文本文件名,Excel文件名       
  7. Dim vTxtFileName, vExcelFileName
  8. vTxtFileName = "list.txt"         ' TXT File
  9. vExcelFileName = "G:\list.xls"         ' Excel File

  10. '        文本文件对象,检查       
  11. Dim fsoTxt, oTxtFile
  12. Set fsoTxt=CreateObject("scripting.FileSystemObject")
  13. If fsoTxt.FileExists( vTxtFileName ) Then
  14. Set oTxtFile = fsoTxt.openTextFile( vTxtFileName, FsoForReading, False )
  15. Else
  16. MsgBox "文件不存在,请检查!"
  17. Exit Sub
  18. End If

  19. '         Excel文件对象,检查
  20. Dim fsoExcel, oExcelFile
  21. Set fsoExcel = CreateObject("scripting.FileSystemObject")
  22. Set oExcelFile = CreateObject("Excel.Application")
  23. If oExcelFile Is Nothing Then MsgBox "系统未检测到安装了EXCEL!"
  24. oExcelFile.DisplayAlerts = False
  25. '        oExcelFile.Visible = True         'Debug

  26. If  Not fsoExcel.FileExists(vExcelFileName) Then
  27. oExcelFile.Workbooks.Add
  28. oExcelFile.Sheets.Item(1).Select
  29. End If

  30. '        读取文本,截取单元值,写入Excel表格
  31. Dim vText, vUnit1, vUnit2, vUnit3, vUnit4, vUnit5, vUnit6, vUnit7, vUnit8, vUnit9, vUnit10
  32. Dim vRow
  33. vRow = 1
  34. While Not oTxtFile.AtEndOfLine       
  35. vText = oTxtFile.ReadLine
  36. vUnit1 = Left(vText, 10)
  37. vUnit2 = Mid(vText,11,9)
  38. vUnit3 = Mid(vText,21,9)
  39. With oExcelFile.Sheets.Item(1)
  40. .Range("A" & vRow).Value = vUnit1
  41. .Range("B" & vRow).Value = vUnit2
  42. .Range("C" & vRow).Value = vUnit3
  43. End With
  44. vRow = vRow + 1
  45. Wend

  46. '        打扫战场       
  47. oTxtFile.Close
  48. Set oTxtFile = Nothing
  49. Set fsoTxt = Nothing

  50. oExcelFile.ActiveWorkbook.SaveAs vExcelFileName
  51. oExcelFile.Quit
  52. Set oExcelFile = Nothing
  53. Set fsoExcel = Nothing
  54. End Sub
复制代码
保存为TXT2EXCEL.vbs

评分

参与人数 1技术 +1 收起 理由
haichuan5121 + 1 辛苦了,我以为三四行代码就能实现呢,继续 ...

查看全部评分

 楼主| 发表于 2015-1-18 19:32:17 | 显示全部楼层
回复 2# bailong360


    太感谢了,结果可以实现,就是分成两部分有点繁琐,能不能合成一个啊,
 楼主| 发表于 2015-1-18 19:48:04 | 显示全部楼层
回复 2# bailong360


    还有就是大侠生成的是TXT文本,导入EXCEL不是分列的 是一列里面三段,不过应急够了,可以下班了,继续求大神!
发表于 2015-1-18 21:21:53 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1,4,5delims=_" %%a in ('dir /b *.jpg') do (
  4.         set "a=%%a"
  5.         echo,!a:~-3!,%%b,%%c
  6. ))>1.csv
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
haichuan5121 + 1 NB大神谢谢

查看全部评分

发表于 2015-1-22 23:51:35 | 显示全部楼层
回复 3# haichuan5121


    忘记说了,代码执行完毕后会在G盘生成一个xls,里面才是真正的结果
没有考虑到一般人的G盘是移动磁盘...
发表于 2015-1-23 11:35:28 | 显示全部楼层
很强大,学习了.........
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 19:19 , Processed in 0.018808 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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