返回列表 发帖

[文本处理] [已更新]16进制文件查看器Hex(FC版)

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

评分人数

哈哈,以前翻看系统帮助是也这么想过,不过当时没有足够的技术去做,后来就忘了

TOP

黑屏下的截图:
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

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

TOP

返回列表