Board logo

标题: [文本处理] 批处理怎样把一个16进制数据的文本文件转成ASCII的文本文件? [打印本页]

作者: height    时间: 2012-1-31 21:30     标题: 批处理怎样把一个16进制数据的文本文件转成ASCII的文本文件?

我在做EEPROM读取的时候得到一个全是16进制数据的文件。如:61 62 63 ......其实它就是对应ASCII中的abc。现在我想用一个批处理把上面的16进制数据文件转成ASCII文件,那怎么写批处理呢?我在批处理之家看到过相应的批处理文件,那个确实也好用。不过实在太长了,我真心看不懂。虚心请教各位高手,有没有简单一点,我容易理解的程序啊?
作者: find    时间: 2012-1-31 21:49

你看到的是哪个?给个链接看看有多长
作者: height    时间: 2012-1-31 21:59

http://bathome.l3.wuyou.com/viewthread.php?tid=8899&rpid=71601&ordertype=0&page=1#pid71601看到的是这个。看到头都大了,我不需要这么多功能的。
作者: jdsdsa    时间: 2012-1-31 22:04

回复 2# find


    有空我给你找找  这种编辑器我收藏了一些
作者: jdsdsa    时间: 2012-1-31 22:12

找到一个 是字符 到 ascii再到 16


说是附件过大啊

要么你邮箱   


百度一下 ascii 转码 或者 ascii 16进制  这些关键字 多找找
作者: height    时间: 2012-1-31 22:12

大家有办法吗。这个是可以实现,不过老实说我真不知道用什么办法
作者: find    时间: 2012-1-31 22:15

能否把你的16进程数据保存到txt文件里面压缩一下传上来,我测试一下转换代码。
作者: height    时间: 2012-1-31 22:47

文件非常简单
如:61 62 63 64 5C 5D 5E
这样一个16进制数加一个空格再加一个16进制数,再是一个空格,这样下去的的文本文件
作者: find    时间: 2012-1-31 23:21

  1. @echo off
  2. set "FileASCII=C:\Test\a.txt"
  3. set "FileResult=%temp%\DecResult.txt"
  4. set ChrNum=
  5. set /p DecCode=<"%FileASCII%"
  6. set DecCode=head %DecCode% tail
  7. :Num2Chr
  8. set DecCode=%DecCode:* =%
  9. if "%DecCode%" neq "tail" (
  10.     if "%DecCode%" neq "" (
  11.         call :SplitDec 0x%DecCode%
  12.         goto :Num2Chr
  13.     )
  14. )
  15. echo OutPutFile="%FileResult%">"%temp%\Decode.vbs"
  16. echo Set objFSO=CreateObject("Scripting.FileSystemObject")>>"%temp%\Decode.vbs"
  17. echo Set objTXT=objFSO.CreateTextFile(OutPutFile,True,False)>>"%temp%\Decode.vbs"
  18. echo ChrVBS=""%ChrNum%>>"%temp%\Decode.vbs"
  19. echo objTXT.Write ChrVBS>>"%temp%\Decode.vbs"
  20. cscript //nologo "%temp%\Decode.vbs"
  21. start "" "%FileResult%"
  22. goto:eof
  23. :SplitDec
  24. set ChrNum=%ChrNum%+Chr(%1)
复制代码

作者: height    时间: 2012-2-1 15:00

谢谢find 。可以我用了一下不行啊。显示缺少“)”什么的。我了一下是使用VBS来实现的,那直接使用VBS是不是更好,更简单?
作者: find    时间: 2012-2-1 23:52

回复 10# height


你懂VBS的话,自己写个试试吧。
作者: find    时间: 2012-2-1 23:53

能否把你测试时使用的txt文件压缩一下传上来我试试
作者: fs2018    时间: 2012-2-2 09:48

可以用DEBUG
作者: height    时间: 2012-2-2 19:03

就是这个东西。刚才有同学说debug,具体实现的办法是怎么样的啊?能否讲一下
作者: lllsoslll    时间: 2012-2-2 19:55

简易debug版:
  1. @echo off
  2. set db=61 62 63 64 65
  3. (echo e0100 %db%
  4. echo r cx
  5. echo 5
  6. echo n xyz.txt
  7. echo w
  8. echo q)|debug
  9. start xyz.txt
复制代码
bat版(abc.txt文件放在当前目录内):
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call ascmap.cmd /437 $||(echo ascmap.cmd文件缺失&pause&exit)
  4. for /f "delims=" %%a in (abc.txt)do set str=%%a&set str=#$:~0x!str: =,1##$:~0x!,1#&call:ECHO
  5. pause
  6. :ECHO
  7. ECHO %str:#=^!%
复制代码

作者: Demon    时间: 2012-2-2 20:01

  1. Dim fso, a, i
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. With fso.OpenTextFile("abc.txt")
  4.     a = Split(.ReadAll)
  5. End With
  6. For i = 0 To UBound(a)
  7.     a(i) = Chr("&H" & a(i))
  8. Next
  9. With fso.OpenTextFile("cba.txt", 2, True)
  10.     .Write Join(a, "")
  11. End With
复制代码

作者: height    时间: 2012-2-2 20:05

lllsoslll 谢谢你的回复,你的BAT版本,在我的电脑中显示如下:'ascmap.cmd' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
ascmap.cmd文件缺失
请按任意键继续. . .
这是什么原因啊?
作者: height    时间: 2012-2-2 20:28

Demon 的测试可行,谢谢Demon。
作者: hfg1977    时间: 2012-2-2 20:46

HEX文件→ASCII文件,命令如下:
  1. Ascii2Hex.bat -H -f HexFile.txt
复制代码
原始HEX文件必须非空白字符开头与结尾,不然生成的文件会多出些字节,可以用这个命令预处理:
  1. sed -i -e "s/\s*$//;s/^\s*//" hexfile.txt
复制代码
虽然我的代码啰嗦了些,还能用也懒得改写了.
作者: jdsdsa    时间: 2012-2-2 21:36

回复 19# hfg1977


    16转到ascii  我想把它转换成批处理 怎么办
作者: hfg1977    时间: 2012-2-2 22:01

Ascii2Hex.bat 本来就是批处理呀, 你在其他批处理文件里如上调用就可.
作者: jdsdsa    时间: 2012-2-2 22:05

姐姐 我是说人可以学的批处理
作者: hfg1977    时间: 2012-2-3 04:56

分离出来了:    http://bbs.bathome.net/viewthread.php?tid=15424&extra=
试试看.....




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