Windows bat脚本学习七(从hex文件中获取bin大小)

2024-09-04 09:28

本文主要是介绍Windows bat脚本学习七(从hex文件中获取bin大小),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介 

        有关hex文件的介绍,直接参考这篇文章:Hex文件解析_hex文件详解-CSDN博客

二、代码

        废话不多,直接上代码:

@echo off
chcp 65001
setlocal enabledelayedexpansionset code=0123456789ABCDEFset hex_file=origin.hex
if exist %hex_file% (echo 正在计算,请稍等。。。。。) else (echo %hex_file%不存在 pause)set /a more_flag=0for /f "delims=:" %%a in (%hex_file%) do (set str=%%a:: 前2个字符是长度	set len=!str:~0,2!	:: 前6-7个字符是类型	set tp=!str:~6,2!:: 00表示是数据内容	if "!tp!"=="00" (:: 计算行号	set /a cnt=!cnt!+1
rem 计算长度。不能通过这种方式来计算总长度。这样有个问题,就是如果地址是不连续的,长度就会偏小。	
rem 		set /a count_len+=0x!len!:: 第3-6个字符是偏移地址set /a offset=0x!str:~2,4!:: 获取第一个偏移地址		if !more_flag! equ 0 (set /a more_flag=2set /a first_offset=!offset!:: 转换为HEXcall :dec2hex !first_offset! hex_techo first_offset:!first_offset!=0x!hex_t!):: 最后一行的偏移地址+长度,即为最终长度	set /a sum=offset+0x!len!-1
::		echo hang=!cnt!,offset=!offset!,len=!len!,sum=!sum!if !sum! geq 65535 (:: 如果偏移有大于0xffff的,说明总大小大于0x10000set /a more_flag=1 ))
):: echo more_flag=!more_flag!,sum=!sum!:: 总大小,是否大于0x10000if !more_flag! equ 1 (set /a final_len=sum+0x10000-!first_offset!) else (set /a final_len=sum-!first_offset!)echo final_len=%final_len%,总行数:!cnt!:: 转换为HEXcall :dec2hex %final_len% hexif %errorlevel%==0 (echo dec2hex结果=0x!hex!set /a ori=0x!hex!
rem		echo ori=!ori!) else (echo dec2hex转化错误)echo 总长度为:!final_len!,0x!hex!pause:dec2hex
set dec=%1
echo dec:!dec!
echo !dec!|findstr "[^0-9]"&&exit /b 1
set hex_str=
:again
set /a tra=!dec!%%16
call,set tra=%%code:~!tra!,1%%
set /a dec/=16
set hex_str=!tra!!hex_str!
if !dec! geq 16 goto again
call,set dec=%%code:~%dec%,1%%
::echo hex:0x!dec!!hex_str!
set %2=!dec!!hex_str!
exit /b 0endlocal

        结果:

        看一下用jflash转化过来的bin文件。

        大小是对应的。 

这篇关于Windows bat脚本学习七(从hex文件中获取bin大小)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135629

相关文章

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase