Board logo

标题: [文本处理] [已更新]16进制文件查看器Hex(FC版) [打印本页]

作者: plp626    时间: 2011-6-5 12:14     标题: [已更新]16进制文件查看器Hex(FC版)

本帖最后由 plp626 于 2012-3-27 08:37 编辑
  1. @echo off
  2. :: 显示文件的ASCII码信息hex.cmd(16进制文件查看器)
  3. :: # Code by plp | V1.1 #
  4. :: %1 --- <文件名或者字符串> 当前路径下没有找到%1文件,则视%1为字符串;
  5. ::                                          字符串推荐带上双引号
  6. :: %2 --- [每行显示个数] //缺省时为16
  7. :: 依赖系统自带的外部命令: FC.exe
  8. :: 程序运行期间会生成临时文件:"$}.tmp"(结束后自动删除)
  9. setlocal enabledelayedexpansion
  10. if not exist "%~1" (
  11.     set/p=%1<nul>%tmp%\$f.tmp
  12.     call %0 "%tmp%\$f.tmp" %2&goto:eof
  13. )
  14. if %2.==. (Set line=16)else set/a line=%2||exit/b2
  15. Set/a sz=%~z1,s=sz%%1000,z=(sz-s)/1000
  16. Set @=`&for /l %%a in (1 1 10)do Set @=!@!!@!
  17. (Set @=!@:~-1000!&set/p=!@:~-%s%!<nul
  18. for /l %%a in (1 1 !z!)do set/p=!@!<nul)>$}.tmp
  19. set "fun=set/p=60 <nul&set/a n+=1&if ^!n^!==%line% echo.&Set n=0"
  20. Set/a tp=-1,n=p=0&for /f "skip=1 tokens=1-4 delims=: " %%a in (
  21.     '"fc/b %~s1 $}.tmp&del $}.tmp"'
  22. )do (
  23.     if %%a neq FC (
  24.         set/a m=0x%%a-tp-1
  25.         for /l %%z in (1 1 !m!)do %fun%
  26.         Set tp=0x%%a&set/p=%%b <nul&set/a n+=1
  27.         if !n!==%line% echo.&Set n=0
  28.     )else set tp=-1&for /l %%a in (1 1 %~z1)do %fun%
  29. )
  30. if !tp! geq 0 (
  31.     set/a m=%~z1-tp-1
  32.     for /l %%a in (1 1 !m!)do %fun%
  33. )
复制代码
  1. @echo off
  2. :: 显示文件ascii信息,并显示所有字符;hhex.cmd
  3. :: hhex.cmd 是hex.cmd 的扩展版,增加特殊字符显示功能;
  4. :: %1 --- <文件名或者字符串> 当前路径下没有找到%1文件,则视%1为字符串;
  5. ::             字符串推荐带上双引号
  6. :: hhex.cmd 调用 hex.cmd 获取文件或字符串的16进制数据信息;
  7. ::             调用 ascmap.cmd 获得ascii索引
  8. ::             下载地址:http://www.bathome.net/thread-12347-1-1.html
  9. :: 版本 1.0; code by plp;2012-3-26
  10. setlocal enabledelayedexpansion
  11. call ascmap.cmd /437 $
  12. for /f "delims=" %%a in ('hex.cmd "%~1" 16')do (
  13. set s=%%a
  14. set s=!s:~0,-1!
  15. set "ss=!s:~0,23!-!s:~24!                                            "
  16. set s=!ss:~0,48!   #$:~0x!s: =,1##$:~0x!,1#
  17. call:econ
  18. )
  19. if "%~0"=="%~f0" set/p=
  20. goto:eof
  21. :econ
  22. (echo;|echo off)>con 2>nul&echo %s:#=!%
  23. echo   
复制代码

作者: CrLf    时间: 2011-6-5 12:31

哈哈,以前翻看系统帮助是也这么想过,不过当时没有足够的技术去做,后来就忘了
作者: plp626    时间: 2012-3-27 17:12

黑屏下的截图:
[attach]5072[/attach]
作者: 飏有泪    时间: 2013-8-1 16:10

...发现个错误,在hhex.cmd调用其他cmd文件前少了个
  1. pushd %~dp0
复制代码
加上这个才能在hhex.cmd根目录下找到其他cmd并调用
我这是Win8的系统!




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