保存为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[23]
set br[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 贴成一个字符串
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: > 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 贴成一个字符串
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 SECOND: >> t123.txt
echo {%z%} >> t123.txt
REM 显示输出文件
echo **Output File name**:
echo t123.txt
pause
标签:count,set,%%,skip,echo,特定,文档,REM,格式
From: https://www.cnblogs.com/xjxlb/p/18633951