批处理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 展开
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 展开
展开全部
@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进行测试
程序运行后,会提示用户拉入文件至窗口
回车后程序会进行分析,最终得到数据:
这里我们帮您保存了程序分析的数据
程序会在分析后,在当前目录下记录分析的结果
有助于您日后的分析学习之用
这里还需要提醒您的是,拉入的文件名最好不要存在空格
中国批处理脚本联盟
追问
追答
把您这个文本数据发送至:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |