特定格式文档数据的转换

保存为bat后缀文件

代码如下:

@echo off

REM 主要功能,取文本中特定列内容,可拼凑后,输出一个文档。
REM 加快处理某些特定格式文档数据的转换

REM 调整格式,避免乱码
chcp 65001
set /p "file_path=请粘贴文件路径(鼠标拖拽文件进来): "
REM version.h 文件内容如下:
REM #pragma once 
REM #define VERSION 6.1.5.4
REM #endif

REM 现在想从 C++ 的头文件里读取版本号 6.1.5.4,代码如下。

REM 下面这个 for 循环的意思是:
REM 1. 按行读取文件
REM 2. skip=1 的作用是过滤掉第 1 行,即从第 2 行开始读
REM 3. tokens=3 的作用是每读取到一行之后,进行切分,然后取第 3 段,这句没有指定切分符号,默认是空白字符(包含空格、Tab)
REM 4. 这里的 %%a 可以改为其它的变量,如 %%b、%%c 等
set ar[32]
set count=0
set z

setlocal EnableDelayedExpansion
echo ************COL*************
REM 取第N列 skip:从第几行开始。判断处为获取个数。
REM 第一个数组:HEX:14-2A=16 DEC:22  (数组总大小43)  取后面23个元素,前20个未改。
REM skip:21(hex:14+1)  获取:24(23+1)
for /f "skip=21 tokens=3 delims=, " %%a in (%file_path%) do (
	set ar[!count!]=%%a
	set /a count+=1	
	if !count! geq 24 (
		echo tooo end
		goto :end_loop
	)
)

:end_loop
REM 贴成一个字符串(23个 取22)
for /L %%i in (0,1,22) do (
    echo !ar[%%i]!
	set z=!z!,0x!ar[%%i]!
)
REM 去掉第一个逗号
set "z=!z:~1!"
REM 输出第一个数组
echo %z%
echo ----EEPROM:EEPROM_default[] > t123.txt
echo {%z%} >> t123.txt

REM 处理第二个数组
set count=0
set z=
echo ************COL2*************
REM 取第N列 skip:从第几行开始。判断处为获取个数。
REM 第二个数组:HEX:5F-7E=1F DEC:31  (32个元素) 整个数组
REM 	#skip:起始位置前一行:59(5f在60行)  总数:33(32加1) 
for /f "skip=59 tokens=3 delims=, " %%a in (%file_path%) do (
	set ar[!count!]=%%a
	set /a count+=1	
	if !count! geq 33 (
		echo tooo end
		goto :end_loop2
	)
)

:end_loop2
REM 贴成一个字符串(32个 取31)
for /L %%i in (0,1,31) do (
    echo !ar[%%i]!
	set z=!z!,0x!ar[%%i]!
)
REM 去掉第一个逗号
set "z=!z:~1!"
REM 输出第二个数组
echo %z%
echo ----SECOND:Thresholds[32] >> t123.txt
echo {%z%} >> t123.txt

REM 显示输出文件
echo **Output File name**:
echo 			t123.txt
pause
posted @ 2024-12-26 18:23  太平东路  阅读(15)  评论(0)    收藏  举报