脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - bat - 批处理版chm文件反编译器 v1.3

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

2021-10-09 01:06namejm bat

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 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文件反编译器内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:http://www.bathome.net/thread-413-1-1.html

延伸 · 阅读

精彩推荐
  • batWindows批处理更改当前工作路径的BAT

    Windows批处理更改当前工作路径的BAT

    最近项目上需要获取文件夹下所有文件信息,因为文件夹是在server上,所以想用批处理bat来获取该路径下所有文件信息,然后通过任务计划管理去每天自动...

    脚本之家12122021-10-07
  • batbat实现一分钟清除系统中所有垃圾文件

    bat实现一分钟清除系统中所有垃圾文件

      在桌面上点鼠标右键,选择新建一个“记事本”,把下面的字复制进去,点“另存为”,把文件名定为“清除系统垃圾.bat”就完成,记住后缀名一定要...

    批处理之家10592021-11-14
  • batbat过滤任意字符

    bat过滤任意字符

    早在写 bat的一个小游戏猜数字的时候我就研究过这个问题 如何在bat里面实现 对输入的任意字符进行过滤 当时使用的几种方法如下 ...

    allyesno11802021-12-26
  • bat变量延迟详解 call setlocal

    变量延迟详解 call setlocal

    变量延迟在for语句中起着至关重要的作用,不只是在for语句中,在其他的复合语句中,它也在幕后默默地工作着,为了突出它的重要性,本节内容在单独的...

    脚本之家5742021-10-08
  • bat让bat批处理以管理员权限运行的实现方法

    让bat批处理以管理员权限运行的实现方法

    这篇文章主要介绍了让bat批处理以管理员权限运行的实现方法,需要的朋友可以参考下...

    bat教程网6962021-10-08
  • bat使用 windows bat 脚本命令一键启动MySQL服务的方法

    使用 windows bat 脚本命令一键启动MySQL服务的方法

    这篇文章主要介绍了使用 windows bat 脚本命令 一键启动MySQL服务的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的...

    明金同学14752021-10-07
  • bat批处理重命名系列案例代码

    批处理重命名系列案例代码

    这篇文章主要介绍了批处理重命名系列案例代码,需要的朋友可以参考下...

    张戈10372021-10-07
  • batWindows下用bat命令行方式更改IE代理服务器设置方法

    Windows下用bat命令行方式更改IE代理服务器设置方法

    批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,批处理文件的扩展名为bat,下面通过本文给大家分享Windows下用bat命令...

    大萝卜空心的6202021-10-06