你手头是否有几本chm格式的电子书?你是否有过满世界搜索反编译chm软件的痛苦经历?你是否抱怨过这些软件有这样或那样的限制?然而,你是否意识到,就在你的系统里,微软已经为你准备好了小巧而强悍的反编译程序

作者不光用后缀名的方式进行了判断,还在处理完成后判断是不是伪chm文件列表,这点做的不错,除了这个以外,还有一点收获,在cmd中输入hh.exe 磁盘名称,看看有什么效果,不错,打开了相应的盘符,以前都是用start 磁盘盘符打开的,又学了一手。

你手头是否有几本chm格式的电子书?你是否有过满世界搜索反编译chm软件的痛苦经历?你是否抱怨过这些软件有这样或那样的限制?然而,你是否意识到,就在你的系统里,微软已经为你准备好了小巧而强悍的反编译程序?

没错,微软已经为各位准备好了这样的软件,它就是各位双击chm文件时系统默认调用的hh.exe!我没有开玩笑,hh.exe这个毫不起眼的家伙,除了是个默默无闻的chm文件阅览器之外,还是个现成的chm文件反编译器!只是这个反编译器的调用参数一直未见微软公布,网上偶尔见到只言片语,也未引起大家的足够,因此它一直是大隐隐于市。

不过,hh.exe要成为我们手里的反编译利器,光靠一条简陋的命令是不够的,它还需要各位的反复测试、耐心打磨。现奉上本人草就的代码,只做了一些主要的功能,尚未做界面的美化,请各位测试。

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: chm文件反编译器 V1.3
:: code by namejm 2007.12.27~2010.4.9 bbs.bathome.net CMD@XP
::
:: 功能:
::   单个/批量反编译chm文件,并保持资源的原始结构。
:: 使用方式有两种:
::   ① 把单个或多个文件直接拖放到本程序。
::   ② 直接双击运行。此时处理的是当前目录下所有以.chm为后缀的文件
:: 执行过程及处理效果:
::   因为 hh -decompile 语句不能使用引号,所以,先把原始资源释放到
:: 短文件名格式的文件夹中,释放完毕后再改名;
::   两种执行方式都有简单的容错处理;反编译后的资源放在单独的文件夹
:: 中,此文件夹位于当前目录,并以chm文件名命名。
::  无法识别不以.chm为后缀名的chm文件,但是可以识别以.chm为后缀名
::的其他文件(貌似有点拗口^_^)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
set TT=chm文件反编译器 1.3
echo.&echo.&echo     正在反编译CHM文件,请稍候...
cd /d "%~dp0"
:: 以拖动文件到批处理文件上的方式运行批处理时,%cd% 的值将会强制转换为
:: %homepath%,因此,上一条语句非常关键!
set "destination=chm文件反编译结果"
for /f "delims=" %%i in ("%destination%") do set "destination_short=%%~sfi"
md "%destination%" 2>nul
del /a /f "%destination%\伪chm文件列表.txt" 2>nul
if "%~1"=="" goto All

:Some
set str=%*
set "str=%str:"=%"
set "str= %str%"
call set "str=%%str: %~d1=" "%~d1%%"
for %%i in ("%str%") do (
  if not %%i=="" (
    title %TT%-正在处理"%%~nxi"
    if /i not "%%~xi"==".chm" (
      echo.&echo     "%%~nxi"不是chm文件
      echo.&echo     请按任意键继续...
      pause>nul
      cls
      echo.&echo.&echo     正在反编译CHM文件,请稍候...
    ) else (
      rd /q /s "%%~ni" 2>nul
      hh -decompile %destination_short%\%%~sni %%~sfi
      if not exist "%destination%\%%~sni" (
        echo "%%~nxi">>"%destination%\伪chm文件列表.txt"
      ) else (
        ren "%destination%\%%~sni" "%%~ni" 2>nul
      )
    )
  )
)
exit

:All
for /f "delims=" %%i in ('dir /a-d /b *.chm 2^>nul') do (
  title %TT%-正在处理"%%~nxi"
  rd /q /s "%destination%\%%~ni" 2>nul
  hh -decompile %destination_short%\%%~sni %%~sfi
  if not exist "%destination%\%%~sni" (
    echo "%%~nxi">>"%destination%\伪chm文件列表.txt"
  ) else (
    ren "%destination%\%%~sni" "%%~ni" 2>nul
  ) 
)

更新历史:

2010.4.9
  把反编译后的资源统一存放在指定的目录下,不再与cmd文件位于同一
目录下;
  修改了几处错误:
  1、当把文件拖曳到cmd窗口时,能兼容绝大多数特殊情况,比如等号、
分号、&;唯有两种情况无法处理:当路径中带&而没有任何空格时;当路径
中存在^符号时;但是,双击运行时不受任何特殊字符的影响;
  2、当拖曳过来的文件与cmd文件不在同一目录下时也能正确处理;
  此为1.3版;
2008.3.13
  生成的文件夹与CHM文件名保持一致,无须对特殊字符再做任何替换;
感谢 随风 的提醒;此为1.2版;
2008.1.27
  增添了反编译多个指定CHM文件的功能;修正了不兼容文件名中带^的
错误;修改了部分提示信息;此为1.1版;
2008.1.8
  不再把文件名中的&强制改为&,但是,文件名中的空格仍然没法不去掉
2007.12.27
  初始版本1.0发布

反编译是为了提取其中有用的资源,或是修改其中的错误而重新制作成chm文件。

反编译后的效果我在代码里已经说明了:单个/批量反编译chm文件,并保持资源的原始结构。

到此这篇关于批处理版chm文件反编译器 v1.3的文章就介绍到这了,更多相关chm文件反编译器内容请搜索爱安网以前的文章或继续浏览下面的相关文章希望大家以后多多支持爱安网!

    无相关信息
最新资讯
阿里不“玩”音乐了?

阿里不“玩”音乐了?

阿里投资网易云音乐之后,虾米音乐与网易云音乐的联动开
美国“网络星期一”在线销售额有望达到创纪录的127亿美元

美国“网络星期一”在

据最新行业预估,美国“网络星期一”的在线销售额有望达
“虾米”终究干不过大鱼

“虾米”终究干不过大

或许自几年前输掉版权大战,从在线音乐领域TOP1的位置跌
比特币价格创历史新高 美股区块链板块大涨

比特币价格创历史新高

比特币站上19500美元/枚,日内涨超1300美元,突破2017年12
华为成为俄罗斯在线出(bu)售(mai)智能手机的第一品牌

华为成为俄罗斯在线出

根据Counterpoint Technology Market Research进行的
比特币价格今年上涨150% 短期内有望突破2万美元

比特币价格今年上涨15

比特币价格近日再次攀升,并收复了3月份以来所损失的绝
最新文章
一键配置jdk环境变量的批处理代码

一键配置jdk环境变量

在重装系统后,可能需要配置计算机的环境变量,在这里以配
CMD命令行管道命令使用介绍

CMD命令行管道命令使

管道符(|)的作用是将符号前的进程输出,当做符号后进程
cmd下获取当前系统时间的bat

cmd下获取当前系统时

编写Windows批处理时经常会需要使用到日期和时间作为
使用批处理脚本在特定目录中启动Git-Bash窗口

使用批处理脚本在特定

这篇文章主要介绍了使用批处理脚本在特定目录中启动Gi
dos之net创建管理员用户的实现

dos之net创建管理员用

这篇文章主要介绍了dos之net创建管理员用户的实现,文中
DOS的重定向命令使用方法以及在安全方面的应用

DOS的重定向命令使用

大家知道,DOS下有一个不为大家所常用的命令——重定向