批处理版chm文件反编译器 v1.3

作者不光用后缀名的方式进行了判断,还在处理完成后判断是不是伪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文件反编译器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 批处理版chm文件反编译器 v1.3

    作者不光用后缀名的方式进行了判断,还在处理完成后判断是不是伪chm文件列表,这点做的不错,除了这个以外,还有一点收获,在cmd中输入hh.exe 磁盘名称,看看有什么效果,不错,打开了相应的盘符,以前都是用start 磁盘盘符打开的,又学了一手. 你手头是否有几本chm格式的电子书?你是否有过满世界搜索反编译chm软件的痛苦经历?你是否抱怨过这些软件有这样或那样的限制?然而,你是否意识到,就在你的系统里,微软已经为你准备好了小巧而强悍的反编译程序? 没错,微软已经为各位准备好了这样的软件,它就是

  • 用批处理上传文件到ftp目录下的实现方法

    为了快速将项目中开发的补丁程序通过ftp快速上传到linux下,感觉每次用flashFxp等工具麻烦),写了个简单的批处理,与大家分享一下. 将以下代码保存为.bat格式的文件,每次将要上传的补丁保存在规定的本地目录中,只要双击执行此文件就能上传到你的指定目录上. 说明: 192.168.1.1 ftp ip 地址 21 端口 username 用户名 password 密码 temp.txt 保存ftp信息的临时文件,上传后删除 C:\Documents and Settings\user\桌

  • jsp实现点击help打开chm文件

    处理问题描述:现在我有个javaweb项目,需要在portal上面点击help即可打开"帮助.chm"文件: 当前搜索百度没有类似案例,自己想了个办法,通过jsp实现: jsp主界面文件 <a href="#" onclick="javascript:$.getJSON('<%=path %>/admin/openYACShelp.jsp?req='+new Date(),function(json) {});" id=&quo

  • 用DOS批处理实现建立文件夹的代码

    题目:用DOS批处理实现建立文件夹 要求:1要求建立文件名格式为"YYYY1-MM1-DD1至YYYY2-MM2-DD2"的文件夹      2其中YYYY1-MM1-DD1是今天的日期;YYYY2-MM2-DD2是四天后的日期 解答: 复制代码 代码如下: @echo off  rem 比较运算符:  EQU - 等于  NEQ - 不等于   LSS - 小于   LEQ - 小于或等于   GTR - 大于   GEQ - 大于或等于  rem 取模运算符:  %% DOS的取模

  • 原生JS和jQuery版实现文件上传功能

    本文实例分享了原生JS版和jQuery 版实现文件上传功能的例子,供大家参考,具体内容如下 <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <title>HTML5 Ajax Uploader</title> <script src="jquery-2.1.1.min.js"></

  • 批处理版的SC

    作者:netpatch 来源:邪恶八进制 中国 说明: 批处版--SC 首先要感谢zzzEVAzzz,这个批处程序就是根据他发布的<Do All in Cmd Shell>文中的资料编写而成! 原理就是根据INF文件的功能(关于inf文件的详细信息,可以参考DDK帮助文档.)加以自动化编写而成! 难度很低,偶只用了十来分钟就编写出了这个批处程序.(高手看了不要笑哦--) 具体用法: 安装服务语法为: np 服务名 /a 服务显示名称 服务描述 启动类型 要添加成服务的程序地址 /s 例子: 例

  • 用批处理修改host文件的代码

    @echo 127.0.0.1 baidu.com >>C:\Windows\System32\Drivers\etc\hosts 这样就是换一行写入. 如果还想换一行,就写: 复制代码 代码如下: @echo. >>C:\Windows\System32\Drivers\etc\hosts @echo 127.0.0.1 baidu.com >>C:\Windows\System32\Drivers\etc\hosts @echo 192.168.4.201 ibmr

  • 用批处理实现将文件以数字重命名的代码

    要求:    1.不能改变a.txt内容的顺序    2.将当前目录下的所有jpg文件以序号的形式重命名 如:从1-16    3.如果有16个文件,必须重命名为1-16,不允许出现16之后的序号 a.txt 内容: 复制代码 代码如下: 2.jpg 1.jpg a.jpg 5ww.jpg c.jpg f.jpg rty.jpg 3.jpg 11.jpg b.jpg 6.jpg e.jpg 8.jpg 111.jpg 7.jpg 30.jpg a.txt中的内容其实就是当前文件夹下的jpg文件列

  • bat批处理批量修改文件扩展名的方法

    有的时候我们可能会遇到,在一个文件夹内有很多个文件,我们需要修改这些文件的扩展名,当然我们可以一个一个的修改,可是如果有很多文件,那就很麻烦了,所以今天就教大家批量修改文件扩展名的方法,希望大家能够灵活运用. 这里假设你要把扩展名为.gif的文件都改成.jpg格式,那么具体方法如下: 1.首先进入需要改扩展名的文件夹内新建一个记事本 2.在记事本中输入如下内容 复制代码 代码如下: ren *.gif *.jpg 3.将记事本的扩展名改名为.bat 4.双击运行bat文件即可批量将该文件夹下的所

  • 批处理应用根据文件内容进行重命名操作

    我想实现以下的目的: 首先,我有个.dat文件,名字是固定的,需要更改这个文件名. .dat第1行的内容是: 10107xxxxxx,代表的意思是2007.01.01,后面的x内容不固定.如果是1~9月,则第1个字符是空的. 现在要根据这行内容来改文件名.比如10107XXXXXX,改为c01-0101.cvs. 110107xxxxxx,改为c01-1101.cvs 请问该怎么写这个BAT文件. 分析: 读出第一行内容到一变量 区变量的第5个字符,可以判断是否为0 1)如果是0,取变量前2位为

随机推荐