Board logo

标题: [文本处理] 批处理下如何创建一个简单的16进制文件 [打印本页]

作者: cxmzlxb    时间: 2011-6-18 15:51     标题: 批处理下如何创建一个简单的16进制文件

比如11.bin  内容如下:00 01 13  这样的16进制文件,以CMD下如何用系统自带的工具创建?
作者: plp626    时间: 2011-6-18 16:20

  1. hex 11.bin
复制代码
hex.bat 1.01版:
http://www.bathome.net/thread-12688-1-2.html
作者: CrLf    时间: 2011-6-18 16:22

可以通过ascmap函数获取http://bbs.bathome.net/thread-12347-1-1.html
  1. @echo off&setlocal enabledelayedexpansion
  2. chcp 437
  3. call ascmap $
  4. chcp 936
  5. cmd /u /c echo;>tmp
  6. (findstr/vrc:$ tmp
  7. set /p=!$:~0x3,1!!$:~0x11,1!)<nul>$
  8. del $>nul
  9. pause
复制代码

作者: plp626    时间: 2011-6-18 16:31

本帖最后由 plp626 于 2011-6-18 16:33 编辑

3# zm900612

ascmap函数(version 1.01.01.00精简版)自带0x00字符,楼上代码可以精简为(可读性强):
  1. @echo off&setlocal enabledelayedexpansion
  2. call ascmap $ 0x00.tmp
  3. set/p=!$:~0x03,1!!$:~0x13,1!<nul>11.bin
  4. copy /b 0x00.tmp+11.bin  11.bin
  5. del 0x00.tmp
  6. pause
复制代码
题外话,很感兴趣楼主要用批处理做这种二进制文件操作?
作者: cxmzlxb    时间: 2011-6-18 16:49

3# zm900612

ascmap函数(version 1.01.01.00精简版)自带0x00字符,楼上代码可以精简为(可读性强):@echo off&setlocal enabledelayedexpansion
call ascmap $ 0x00.tmp
set/p=!$:~0x03,1!!$:~0x13,1!11.b ...
plp626 发表于 2011-6-18 16:31


呵呵,主要是用于打印数据及格式的调整!

看了上面的算法,很不错,谢谢!
作者: qzwqzw    时间: 2011-6-18 17:36

既然会切换代码页
不如就用debug
可读性更强
  1. @goto Start
  2. E 100 00 01 13
  3. R CX
  4. 3
  5. W
  6. Q
  7. :Start
  8. @echo off
  9. chcp 437 & graftabl 936 & cls
  10. debug test.bin <%~sf0
复制代码

作者: cxmzlxb    时间: 2011-6-18 22:09

既然会切换代码页
不如就用debug
可读性更强
@goto Start
E 100 00 01 13
R CX
3
W
Q

:Start
@echo off
chcp 437 & graftabl 936 & cls
debug test.bin
qzwqzw 发表于 2011-6-18 17:36



DEBUG还不怎么会用,这段代码我觉得很有意思,谢谢!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2