Board logo

标题: [文本处理] 小型二进制文件ASCII编码器 [打印本页]

作者: qzwqzw    时间: 2011-5-18 10:13     标题: 小型二进制文件ASCII编码器

本帖最后由 qzwqzw 于 2011-5-24 19:45 编辑
  1. :: ASCodec.cmd - 小型二进制文件ASCII编码器
  2. :: 程序说明:
  3. ::   主要实现将小型二进制文件转换为ASCII字符代码,便于在纯文本环境中传输
  4. ::   本编码器不包含任何压缩算法,编码后的ASCII代码体积是原二进制文件的4/3
  5. ::   编码器decbin与解码器encbin原作者为Terry Newton,具体见参考链接中信息
  6. ::   在这里,二进制文件是广义上的文件,既可以是程序文件
  7. ::   也可以是文本文件、网页文件或者其它文件大小不超过40KB的任何文件
  8. :: 程序限制:
  9. ::   受decbin限制,目前仅能编码二进制文件的前40K字节部分,其它部分将被丢弃
  10. :: 版本历史:
  11. :: 2011-05-18 - qzwqzw
  12. :: 2011-05-24 - qzwqzw - 解决一些bug,改进用户界面,适应跨PC环境
  13. :: 参考链接:
  14. ::   http://www.infionline.net/~wtnewton/batch/conv2bat.htm
  15. :: 使用方法:
  16. ::   将要编码的二进制文件拖到批处理程序中执行
  17. ::   即会在二进制文件所在目录生成一个同名的批处理文件
  18. ::   将该批处理文件移动到任何其他目录
  19. ::   双击执行将会生成原来的二进制文件
  20. @echo off & setlocal
  21. if [%1]==[:Error] goto %1
  22. if not [%1]==[] if exist "%~1" goto :Codec
  23. echo.请将要编码的文件拖到该窗口中,然后按回车后开始编码
  24. echo.请注意:该文件不能大于40K字节。
  25. echo.
  26. set/p file=文件名:
  27. %0 %file%
  28. :Codec - 生成ASCODE形式的解码器与编码器的ASCII代码,并据此生成编码器
  29. if %~z1 gtr 40960 %0 :Error 1 "文件 '%1' 的文件大小 '%~z1' 超过40KB"
  30. chcp 437>nul & graftabl 936>nul
  31. cls
  32. echo.
  33. echo 开始创建解码器与编码器...
  34. set dec=decbin.com
  35. set enc=encbin.com
  36. set tf=encbin.tmp
  37. :: CM3编码的ASCII转二进制解码器...
  38. ECHO:`h}aXP5y`P]4nP_XW(F4(F6(F=(FF)FH(FL(Fe(FR0FTs*}`A?+,>%dec%
  39. ECHO:fkOU):G*@Crv,*t$HU[rlf~#IubfRfXf(V#fj}fX4{PY$@fPfZsZ$:NvN$>>%dec%
  40. ECHO:9AyroNB-)dOKwK0rRkfTbi)ws_~[[q9wE'sqlu1sY*Bsfe=@ziNS1a)88e>>%dec%
  41. ECHO:f9RTL)9Z{3INBD?o6@MDLO{Zz4Q23E-'09NX9@Vz(42A7c8zMS:u$w6k5Q>>%dec%
  42. ECHO:N,h:le)~gF?tutTyxoe5UiIdtn';0rJ1q:{7;lAl']y:yTjZBbOo?QRIdN>>%dec%
  43. ECHO:$Bp@P/nAp_r0*4f'XcF4q3o?$_t5lx$Q-OxSfUNQ__Gd~$Q-Oxgkx=LGHU>>%dec%
  44. ECHO:S)$C6P8#>>%dec%
  45. :: 二进制转ASCII的编码器,以下ASCII代码即用自身编码而成
  46. ECHO:AALIxnCmeRf0\Uf0pWjXYBlxr0MyG02u022nc1Z5Z0r4G2ldMAj[8F34dd>%tf%
  47. ECHO:Z1Z0r4G2ld6Aj[8F34Ed3EmbG02lJpNl0jjjCt9v0407ZvjtS3I0j7rvLv>>%tf%
  48. ECHO:G203l0wUDv20F42eD3ZujTS6fmprbD2e4uwp39gwYdfDfAdng0f1f0ZF2t>>%tf%
  49. ECHO:04bemDCXj0C0LHtA2701ZsG0SFdfW]6630Jf36S6W1f0rJ2fMfQYW1YAoO>>%tf%
  50. ECHO:EAt0y[36S6W1[8LRi3}>>%tf%
  51. :: 使用解码器生成解码器
  52. %dec% < %tf% > %enc%
  53. if errorlevel 1 %0 :Error 2 创建编码器与解码器错误 "请检查文件%dec%、%tf%与%enc%"
  54. echo.
  55. echo 成功创建编码器 %enc% 与 解码器 %dec%
  56. :Generate - 生成自解码的批处理,运行后解码生成指定的二进制文件
  57. echo :: %~f1.bat - Created by ASCodec.cmd - %date% > "%~f1.bat"
  58. echo @echo off ^& setlocal >> "%~f1.bat"
  59. echo set dec=decbin.com>> "%~f1.bat"
  60. find ">%%dec%%" < "%~f0" >> "%~f1.bat"
  61. echo more +12 ^< "%%~f0" ^>%%tmp%%\%~sn1.tmp >> "%~f1.bat"
  62. echo %%dec%% ^< %%tmp%%\%~sn1.tmp ^> "%~nx1" >> "%~f1.bat"
  63. echo del %%dec%% ^& goto :eof >> "%~f1.bat"
  64. %enc% < %1 >> "%~f1.bat"
  65. echo.
  66. echo 成功创建自解码文件 "%~f1.bat"
  67. if not "%~dp0"=="%~dp1" start "" explorer.exe /select,"%~f1.bat"
  68. del %tf% %enc% %dec%
  69. if "%~0"=="%~f0" pause
  70. goto :eof
  71. :Error - 处理抛出的错误消息
  72. echo.
  73. echo %0 发生错误[%2]: %~3
  74. echo.
  75. if not [%4]==[] echo 提示:%~4
  76. if not "%~dp0"=="%~dp1" pause
  77. goto :eof
复制代码

作者: mxxcgzxxx    时间: 2011-5-18 13:12

先收藏了!慢慢享用
作者: ppmath    时间: 2011-5-24 08:16

怎么用啊。。。。????
作者: qzwqzw    时间: 2011-5-24 16:38

将要编码的二进制文件拖到批处理程序中执行
即会在二进制文件所在目录生成一个同名的批处理文件
将该批处理文件移动到任何其他目录
双击执行将会生成原来的二进制文件

在这里二进制文件是广义的
可以是程序文件、文本文件、网页文件、音乐文件或者视频文件
作者: ppmath    时间: 2011-5-24 17:41

4# qzwqzw


不能还原!
而且得到bat文件是原来文件体积的好多倍,
不好用。
作者: qzwqzw    时间: 2011-5-24 17:50

你再确认一下
代码经过了修改
作者: ppmath    时间: 2011-5-24 17:58

压缩文件格式未知或者数据已经被损坏。
作者: qzwqzw    时间: 2011-5-24 18:00

请确认文件大小不超过40K
作者: ppmath    时间: 2011-5-24 18:11

好了,谢谢楼主,批处理好厉害
作者: qzwqzw    时间: 2011-5-24 18:15

谢谢提醒
增加了错误检查与处理模块
作者: plp626    时间: 2011-5-24 21:26

收藏之。。。拿下。。。




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