标题: [文本处理] 批处理如何提取文件夹里txt文本中的指定内容保存到EXCEL表格中 [打印本页]
作者: kouyuhedou 时间: 2017-1-10 16:35 标题: 批处理如何提取文件夹里txt文本中的指定内容保存到EXCEL表格中
本帖最后由 pcl_test 于 2017-3-30 16:39 编辑
请问用批处理是否能够完成在批量提取文件夹中.TXT文档中如下数据内容并保存到EXCEL列表中,
需要提取的文件格式如下,文件中有视频、音频、菜单三个单元,
要在文件中视频单元提取“文件格式”“画面高度”“扫描方式”
音频单元提取“文件格式”“采样率”
菜单单元提取“服务名”
各单元序号需一一对应起来- 概要
- ID : 135 (0x87)
- 完整名称 : D:\TS\HD\264高清音视不同步码.ts
- 文件格式 : MPEG-TS 188+16
- 文件大小 : 502 MiB
- 长度 : 1分 41秒
- 开始时间 : UTC 2009-11-09 03:22:37
- 结束时间 : UTC 2009-11-09 03:24:19
- 混合码率模式 : CBR
- 平均混合码率 : 41.2 Mb/s
- 网络名称 : csgd
- 国家(地区) : CHN
- 时区 : +08:00:00
-
- 视频 #1
- ID : 5181 (0x143D)
- 菜单ID : 3501 (0xDAD)
- 文件格式 : AVC
- 文件格式/信息 : Advanced Video Codec
- 格式简介 : Main@L4
- 格式设置, CABAC : 是
- 格式设置, ReFrames : 4 frames
- 格式设置, GOP : M=4, N=32
- 编码设置ID : 27
- 长度 : 1分 41秒
- 画面宽度 : 1 920像素
- 画面高度 : 1 080像素
- 画面比例 : 16:9
- 帧率 : 25.000 FPS
- 标准 : Component
- 色彩空间 : YUV
- 色度抽样 : 4:2:0
- 位深度 : 8位
- 扫描方式 : 隔行扫描
- 扫描顺序 : 奇数场(前场TFF)优先
- colour_range : Limited
- 颜色初选 : BT.709
- 传输特质 : BT.709
- 矩阵系数 : BT.709
-
- 视频 #2
- ID : 5182 (0x143E)
- 菜单ID : 3504 (0xDB0)
- 文件格式 : AVC
- 文件格式/信息 : Advanced Video Codec
- 格式简介 : Main@L4
- 格式设置, CABAC : 是
- 格式设置, ReFrames : 4 frames
- 编码设置ID : 27
- 长度 : 1分 42秒
- 画面宽度 : 1 920像素
- 画面高度 : 1 080像素
- 画面比例 : 16:9
- 帧率 : 25.000 FPS
- 标准 : Component
- 色彩空间 : YUV
- 色度抽样 : 4:2:0
- 位深度 : 8位
- 扫描方式 : 隔行扫描
- 扫描顺序 : 奇数场(前场TFF)优先
- colour_range : Limited
- 颜色初选 : BT.709
- 传输特质 : BT.709
- 矩阵系数 : BT.709
-
- 视频 #3
- ID : 5183 (0x143F)
- 菜单ID : 3502 (0xDAE)
- 文件格式 : AVC
- 文件格式/信息 : Advanced Video Codec
- 格式简介 : Main@L4
- 格式设置, CABAC : 是
- 格式设置, ReFrames : 4 frames
- 编码设置ID : 27
- 长度 : 1分 41秒
- 画面宽度 : 1 920像素
- 画面高度 : 1 080像素
- 画面比例 : 16:9
- 帧率 : 25.000 FPS
- 标准 : Component
- 色彩空间 : YUV
- 色度抽样 : 4:2:0
- 位深度 : 8位
- 扫描方式 : 隔行扫描
- 扫描顺序 : 奇数场(前场TFF)优先
- colour_range : Limited
- 颜色初选 : BT.709
- 传输特质 : BT.709
- 矩阵系数 : BT.709
-
- 视频 #4
- ID : 5186 (0x1442)
- 菜单ID : 3503 (0xDAF)
- 文件格式 : AVC
- 文件格式/信息 : Advanced Video Codec
- 格式简介 : Main@L4
- 格式设置, CABAC : 是
- 格式设置, ReFrames : 4 frames
- 编码设置ID : 27
- 长度 : 1分 40秒
- 画面宽度 : 1 920像素
- 画面高度 : 1 080像素
- 画面比例 : 16:9
- 帧率 : 25.000 FPS
- 标准 : Component
- 色彩空间 : YUV
- 色度抽样 : 4:2:0
- 位深度 : 8位
- 扫描方式 : 隔行扫描
- 扫描顺序 : 奇数场(前场TFF)优先
- colour_range : Limited
- 颜色初选 : BT.709
- 传输特质 : BT.709
- 矩阵系数 : BT.709
-
- 音频 #1
- ID : 5693 (0x163D)
- 菜单ID : 3501 (0xDAD)
- 文件格式 : AC-3
- 文件格式/信息 : Audio Coding 3
- 扩展模式 : CM (complete main)
- 格式设置, Endianness : Big
- 编码设置ID : 129
- 长度 : 1分 41秒
- 码率模式 : CBR
- 码率 : 448 kb/s
- 声道 : 2声道
- 声道位置 : Front: L R
- 采样率 : 48.0 kHz
- 帧率 : 31.250 FPS (1536 spf)
- 位深度 : 16位
- 压缩模式 : 有损压缩
- 视频延迟 : -1秒 560 ms
- 大小 : 5.44 MiB (1%)
-
- 音频 #2
- ID : 5694 (0x163E)
- 菜单ID : 3504 (0xDB0)
- 文件格式 : AC-3
- 文件格式/信息 : Audio Coding 3
- 扩展模式 : CM (complete main)
- 格式设置, Endianness : Big
- 编码设置ID : 129
- 长度 : 1分 41秒
- 码率模式 : CBR
- 码率 : 448 kb/s
- 声道 : 2声道
- 声道位置 : Front: L R
- 采样率 : 48.0 kHz
- 帧率 : 31.250 FPS (1536 spf)
- 位深度 : 16位
- 压缩模式 : 有损压缩
- 视频延迟 : -1秒 576 ms
- 大小 : 5.44 MiB (1%)
-
- 音频 #3
- ID : 5695 (0x163F)
- 菜单ID : 3502 (0xDAE)
- 文件格式 : AC-3
- 文件格式/信息 : Audio Coding 3
- 扩展模式 : CM (complete main)
- 格式设置, Endianness : Big
- 编码设置ID : 129
- 长度 : 1分 41秒
- 码率模式 : CBR
- 码率 : 448 kb/s
- 声道 : 6声道
- 声道位置 : Front: L C R, Side: L R, LFE
- 采样率 : 48.0 kHz
- 帧率 : 31.250 FPS (1536 spf)
- 位深度 : 16位
- 压缩模式 : 有损压缩
- 视频延迟 : -1秒 16 ms
- 大小 : 5.44 MiB (1%)
-
- 音频 #4
- ID : 5698 (0x1642)
- 菜单ID : 3503 (0xDAF)
- 文件格式 : MPEG Audio
- 格式版本 : Version 1
- 格式简介 : Layer 2
- 编码设置ID : 4
- 长度 : 1分 41秒
- 码率模式 : CBR
- 码率 : 256 kb/s
- 声道 : 2声道
- 采样率 : 48.0 kHz
- 压缩模式 : 有损压缩
- 视频延迟 : -4小时 42分
- 大小 : 3.11 MiB (1%)
-
- 菜单 #1
- ID : 32 (0x20)
- 菜单ID : 3501 (0xDAD)
- 长度 : 1分 41秒
- 列表 : 5181 (0x143D) (AVC) / 5693 (0x163D) (AC-3)
- 服务名 : 央视高清
- 服务类型 : digital television
-
- 菜单 #2
- ID : 33 (0x21)
- 菜单ID : 3502 (0xDAE)
- 长度 : 1分 41秒
- 列表 : 5183 (0x143F) (AVC) / 5695 (0x163F) (AC-3)
- 服务名 : 湖南卫视(高清)
- 服务类型 : digital television
-
- 菜单 #3
- ID : 34 (0x22)
- 菜单ID : 3503 (0xDAF)
- 长度 : 1分 41秒
- 列表 : 5186 (0x1442) (AVC) / 5698 (0x1642) (MPEG Audio)
- 服务名 : CHC电影(高清)
- 服务类型 : digital television
-
- 菜单 #4
- ID : 37 (0x25)
- 菜单ID : 3504 (0xDB0)
- 长度 : 1分 41秒
- 列表 : 5182 (0x143E) (AVC) / 5694 (0x163E) (AC-3)
- 服务名 : 央视综合(高清)
- 服务类型 : digital television
复制代码
谢谢!!!
作者: kouyuhedou 时间: 2017-1-17 19:24
都不愿意帮??
作者: Nsqs 时间: 2017-1-17 22:44
本帖最后由 Nsqs 于 2017-1-18 09:10 编辑
方法1- @echo off&setlocal enabledelayedexpansion
- set "ff=收集"
- md "%ff%" 2>nul
- for %%i in ("*.txt")do (set f=%%i
- (for /f "tokens=1,2 delims=:#" %%1 in ('findstr /n "^[\u4e00-\u9fff0]*\ #" "%%i"')do (
- set b=%%2
- set /a s=%%1
- if "%%2"=="视频 " (set /a c1+=1
- call echo %%2#%%c1%%
- call:视频&echo;
- )
- if "%%2"=="音频 " (set /a c2+=1
- call echo %%2#%%c2%%
- call:音频&echo;
- )
- if "%%2"=="菜单 " (set /a c3+=1
- call echo %%2#%%c3%%
- call:菜单&echo;
- )
- ))>%ff%\%ff%_%%~ni.txt
- )
- exit
- :视频
- for /f "tokens=1,2 delims=:#" %%1 in ('more +%s%^<%f%')do (
- set a=%%1
- call set a=%%a: =%%
- for %%3 in (文件格式 画面高度 扫描方式)do (
- if "!a!"=="%%3" echo %%1:%%2&set /a z+=1
- if !z! geq 3 set z=0&goto :eof
- )
- )
- goto :eof
- :音频
- for /f "tokens=1,2 delims=:#" %%1 in ('more +%s%^<%f%')do (
- set a=%%1
- call set a=%%a: =%%
- for %%3 in (文件格式 采样率)do (
- if "!a!"=="%%3" echo %%1:%%2&set /a z+=1
- if !z! geq 2 set z=0&goto :eof
- )
- )
- goto :eof
- :菜单
- for /f "tokens=1,2 delims=:#" %%1 in ('more +%s%^<%f%')do (
- set a=%%1
- call set a=%%a: =%%
- if "!a!"=="服务名" echo %%1:%%2&goto :eof
- )
- goto :eof
复制代码
方法2- @echo off&setlocal enabledelayedexpansion
- set "ff=收集"
- md "%ff%" 2>nul
- set "cl1=视频"
- set "cl2=音频"
- set "cl3=菜单"
- set "ss1=文件格式 画面高度 扫描方式"
- set "ss2=文件格式 采样率"
- set "ss3=服务名"
- for /l %%1 in (1 1 3)do call set "cl%%1=!cl%%1! "
- set "m=%cl1%
- set /a n1=3,n2=2,n3=1
- for %%i in ("*.txt")do (set f=%%i&set /a c=1,x=1
- (for /f "tokens=1,2 delims=:#" %%1 in ('findstr /n "^[\u4e00-\u9fff0]*\ #" "%%i"')do (
- set b=%%2
- set /a s=%%1
- call:d&echo;
- ))>%ff%\%ff%_%%~ni.txt
- )
- exit
- :d
- set /a z+=1
- call echo %%b%%#%%z%%
- call set ss=%%ss!x!%%
- call set n=%%n!x!%%
- if !z! geq 4 (
- set /a x+=1,z=0
- call set m=!cl%%x%%!
- )
- for /f "tokens=1,2 delims=:#" %%1 in ('more +%s%^<%f%')do (
- set a=%%1
- call set a=%%a: =%%
- for %%3 in (%ss%)do (
- if "!a!"=="%%3" echo %%1:%%2&set /a z1+=1
- if !z1! geq %n% set z1=0&goto :eof
- )
- )
复制代码
两个方法效率一样的
作者: Nsqs 时间: 2017-1-18 09:17
本帖最后由 Nsqs 于 2017-1-18 09:23 编辑
回复 2# kouyuhedou
楼主口气真大,没谁没事无偿求着给你写吧,excel部分就不写了自己可以百度
作者: pcl_test 时间: 2017-1-18 13:31
回复 3# Nsqs - findstr /n "^[\u4e00-\u9fff0]*\ #" "%%i"
复制代码
实际匹配的是#
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |