标题: [文本处理] 批处理怎样把一个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
- @echo off
- set "FileASCII=C:\Test\a.txt"
- set "FileResult=%temp%\DecResult.txt"
- set ChrNum=
- set /p DecCode=<"%FileASCII%"
- set DecCode=head %DecCode% tail
-
- :Num2Chr
- set DecCode=%DecCode:* =%
- if "%DecCode%" neq "tail" (
- if "%DecCode%" neq "" (
- call :SplitDec 0x%DecCode%
- goto :Num2Chr
- )
- )
- echo OutPutFile="%FileResult%">"%temp%\Decode.vbs"
- echo Set objFSO=CreateObject("Scripting.FileSystemObject")>>"%temp%\Decode.vbs"
- echo Set objTXT=objFSO.CreateTextFile(OutPutFile,True,False)>>"%temp%\Decode.vbs"
- echo ChrVBS=""%ChrNum%>>"%temp%\Decode.vbs"
- echo objTXT.Write ChrVBS>>"%temp%\Decode.vbs"
- cscript //nologo "%temp%\Decode.vbs"
- start "" "%FileResult%"
- goto:eof
-
- :SplitDec
- 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版:- @echo off
- set db=61 62 63 64 65
- (echo e0100 %db%
- echo r cx
- echo 5
- echo n xyz.txt
- echo w
- echo q)|debug
- start xyz.txt
复制代码
bat版(abc.txt文件放在当前目录内):- @echo off
- setlocal enabledelayedexpansion
- call ascmap.cmd /437 $||(echo ascmap.cmd文件缺失&pause&exit)
- for /f "delims=" %%a in (abc.txt)do set str=%%a&set str=#$:~0x!str: =,1##$:~0x!,1#&call:ECHO
- pause
- :ECHO
- ECHO %str:#=^!%
复制代码
作者: Demon 时间: 2012-2-2 20:01
- Dim fso, a, i
- Set fso = CreateObject("Scripting.FileSystemObject")
-
- With fso.OpenTextFile("abc.txt")
- a = Split(.ReadAll)
- End With
-
- For i = 0 To UBound(a)
- a(i) = Chr("&H" & a(i))
- Next
-
- With fso.OpenTextFile("cba.txt", 2, True)
- .Write Join(a, "")
- 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文件,命令如下:- Ascii2Hex.bat -H -f HexFile.txt
复制代码
原始HEX文件必须非空白字符开头与结尾,不然生成的文件会多出些字节,可以用这个命令预处理:- 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 |