批处理txt档案,提取其中内容并汇总到新的文档

每个文档中含有比较重要的信息需要提取。例如:#0001.txt中包含:OTP_READ[0][0]=0x8cOTP_READ[0][1]=0x6aOTP_READ[0][... 每个文档中含有比较重要的信息需要提取。例如:#0001.txt中包含:
OTP_READ[0][0]=0x8c
OTP_READ[0][1]=0x6a
OTP_READ[0][2]=0xaa
OTP_READ[0][3]=0x88
OTP_READ[0][4]=0x14
OTP_READ[0][5]=0x0
OTP_READ[0][6]=0x0
OTP_READ[0][7]=0x0
OTP_READ[0][8]=0x20
OTP_READ[0][9]=0xb1
OTP_READ[0][10]=0x35
OTP_READ[0][11]=0xd9
OTP_READ[0][12]=0x2
OTP_READ[0][13]=0x4
OTP_READ[0][14]=0xc2
OTP_READ[0][15]=0xe7
OTP_READ[0][16]=0x20
OTP_READ[0][17]=0x0
OTP_READ[0][18]=0x1c
OTP_READ[0][19]=0x2e
OTP_READ[0][20]=0x0
OTP_READ[0][21]=0x0
OTP_READ[0][22]=0x0
OTP_READ[0][23]=0x0
OTP_READ[0][24]=0x0
OTP_READ[0][25]=0x0
OTP_READ[0][26]=0x0
OTP_READ[0][27]=0x0
OTP_READ[0][28]=0x0
OTP_READ[0][29]=0x7a
OTP_READ[0][30]=0x21
OTP_READ[0][31]=0x3e
#0002.txt中包含:
OTP_READ[0][0]=0x8c
OTP_READ[0][1]=0x6a
OTP_READ[0][2]=0xaa
OTP_READ[0][3]=0x88
OTP_READ[0][4]=0x14
OTP_READ[0][5]=0x0
OTP_READ[0][6]=0x0
OTP_READ[0][7]=0x0
OTP_READ[0][8]=0x20
OTP_READ[0][9]=0xb1
OTP_READ[0][10]=0x55
OTP_READ[0][11]=0x2c
OTP_READ[0][12]=0x2
OTP_READ[0][13]=0x4
OTP_READ[0][14]=0x7a
OTP_READ[0][15]=0xb7
OTP_READ[0][16]=0x20
OTP_READ[0][17]=0x0
OTP_READ[0][18]=0x2c
OTP_READ[0][19]=0x2d
OTP_READ[0][20]=0x0
OTP_READ[0][21]=0x0
OTP_READ[0][22]=0x0
OTP_READ[0][23]=0x0
OTP_READ[0][24]=0x0
OTP_READ[0][25]=0x0
OTP_READ[0][26]=0x0
OTP_READ[0][27]=0x0
OTP_READ[0][28]=0x0
OTP_READ[0][29]=0x6b
OTP_READ[0][30]=0x35
OTP_READ[0][31]=0x3b
经过批处理后,生成一个文档并记录如下内容:
#0001.txt 8c6aaa881400000020b1552c02047ab720002c2d0000000000000000006b353b
#0002.txt 8c6aaa881400000020b1552c02047ab720002c2d0000000000000000006b353b
注:
1、提取OTP_READ[0][*]=后面的内容,为16进制数,不足2码的在前面补0
2、每个文档中包含多个OTP_READ[0][0]~OTP_READ[0][31]==*内容(可能不连续),需将提取后的内容拼接起来。
3、文档中包含多个OTP_READ[0][0]~OTP_READ[0][31],要抓取的是从第580~611行开始的数据
已解决,包含多个OTP,只保存最后一个,多谢~
@echo off
for %%a in (*.txt) do (
setlocal enabledelayedexpansion
set "s=%%a "
set /a i=0
for /f "delims=" %%b in ('findstr /l "OTP_READ[0]" "%%a"') do (
set /a i+=1
for /f "tokens=2 delims=x" %%c in ("%%b") do set t=0%%c
set "temp1=!temp1!!t:~-2!"
if !i! equ 32 (
set /a i=0
set Word=!temp1!
set temp1=
)
)
set "s=!s!!Word!"
echo !s!>>UID_List.log
endlocal
)
pause
展开
 我来答
GAGATOSHUT
2016-05-23 · TA获得超过3460个赞
知道小有建树答主
回答量:645
采纳率:50%
帮助的人:256万
展开全部
@echo Off & setlocal Enabledelayedexpansion
 
set/p file_1=请拉入文件进行分析:
 
for %%a in (!file_1!) do set filename=%%~nxa
 
for /f "delims=" %%a in (!file_1!) do (
set/a step_1+=1
set str=
set str=%%a
if /i "!str:~-2,1!"=="x" (
echo 0!str:~-1!>>$1
) else echo !str:~-2!>>$1)
 
(set str=
for /f "delims=" %%a in ($1) do (
set str=%%a
<nul set /p=!str: =!
))>!file_1!.ini
 
>>结果.txt (for /f "delims=" %%a in (!file_1!.ini) do (
echo !filename! %%a))
 
for /f "delims=" %%a in (!file_1!.ini) do (
cls & echo !filename! %%a)
 
dEl !file_1!.ini dEl $1 & pause>nul

这里我们复制了你的文本到1.txt进行测试

 

程序运行后,会提示用户拉入文件至窗口

 

回车后程序会进行分析,最终得到数据:

 

这里我们帮您保存了程序分析的数据

 

程序会在分析后,在当前目录下记录分析的结果

 

有助于您日后的分析学习之用

 

这里还需要提醒您的是,拉入的文件名最好不要存在空格

 

中国批处理脚本联盟

追问

有几个问题:

1、您给的程序做法,只能一次处理一个文本,希望能同时处理同一文件夹下的多个文本哦(最多4000个左右)

2、您给的程序,只能包含OTP_READ[0][0]~OTP_READ[0][31]内容,若包含其他内容,也会有抓取的(如图)

追答
把您这个文本数据发送至:
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式