[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

有文件夹下有很多这个格式命名的图片,求大神批处理提取文件名,并将之输出到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
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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

评分人数

    • haichuan5121: 辛苦了,我以为三四行代码就能实现呢,继续 ...技术 + 1

TOP

回复 2# bailong360


    太感谢了,结果可以实现,就是分成两部分有点繁琐,能不能合成一个啊,

TOP

回复 2# bailong360


    还有就是大侠生成的是TXT文本,导入EXCEL不是分列的 是一列里面三段,不过应急够了,可以下班了,继续求大神!

TOP

  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

评分人数

TOP

回复 3# haichuan5121


    忘记说了,代码执行完毕后会在G盘生成一个xls,里面才是真正的结果
没有考虑到一般人的G盘是移动磁盘...

TOP

很强大,学习了.........

TOP

返回列表