编写bat脚本调用hexview将S19文件进行FF填充
时间: 2023-07-15 12:15:57 浏览: 196
以下是一个简单的批处理脚本,可以使用HexView工具将S19文件进行FF填充:
```
@echo off
setlocal enabledelayedexpansion
set HEXVIEW_PATH="C:\Program Files\HexView\hexview.exe"
set INPUT_FILE="C:\path\to\input.s19"
set OUTPUT_FILE="C:\path\to\output.s19"
set FILL_BYTE=FF
if not exist %INPUT_FILE% (
echo Input file not found!
exit /b 1
)
if exist %OUTPUT_FILE% (
del %OUTPUT_FILE%
)
for /f "tokens=1-3" %%a in (%INPUT_FILE%) do (
if "%%a"=="S1" (
set HEX_DATA=%%c
set HEX_DATA=!HEX_DATA:~0,-2!
set HEX_DATA=!HEX_DATA: =!
set HEX_DATA=!HEX_DATA:..=!
set HEX_DATA=!HEX_DATA: =!
set HEX_DATA=!HEX_DATA:~2!
set BYTE_COUNT=%%b
set LINE_DATA=%%a%%b%%c
set FF_COUNT=0
for /l %%i in (0,2,254) do (
set HEX_BYTE=!HEX_DATA:~%%i,2!
if "!HEX_BYTE!"=="!FILL_BYTE!" (
set /a FF_COUNT+=1
) else (
set FF_COUNT=0
)
if !FF_COUNT! geq 16 (
set LINE_DATA=!LINE_DATA!FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
set FF_COUNT=0
)
)
set LINE_DATA=!LINE_DATA:~0,2!!LINE_DATA:~2!
set NEW_LINE=!LINE_DATA:~0,8!
set /a BYTE_SUM=!BYTE_COUNT!+!NEW_LINE!
set BYTE_SUM=!BYTE_SUM:~-2!
set NEW_LINE=S1!BYTE_SUM!!NEW_LINE!!LINE_DATA:~8!
echo !NEW_LINE!>>%OUTPUT_FILE%
) else (
echo %%a%%b%%c>>%OUTPUT_FILE%
)
)
echo Done.
```
说明:
1. 将HexView工具的路径、输入文件、输出文件和要填充的字节设置成变量,方便修改。
2. 检查输入文件是否存在,如果不存在则退出。
3. 如果输出文件已经存在,则删除它,以避免出现重复数据。
4. 使用“for”循环逐行读取输入文件中的数据,并将每行数据分解为三个部分:记录类型、字节数和数据。
5. 如果记录类型为“S1”,则提取数据部分中的十六进制数据并将其转换为连续的字节。然后,对于每个字节,检查它是否与要填充的字节相同。如果是,则增加一个计数器。如果计数器达到了16,则在输出数据中添加16个FF字节。如果字节与要填充的字节不同,则将计数器重置为0。最后,将填充后的数据重新编码为S19格式,并写入输出文件。
6. 如果记录类型不是“S1”,则将整行数据直接写入输出文件。
7. 处理完所有记录后,脚本将显示“Done.”消息。
阅读全文