对"用批处理写的chm反编译工具"小析-阿里云开发者社区

开发者社区> 科技小先锋> 正文

对"用批处理写的chm反编译工具"小析

简介:
+关注继续查看

起初看到这个题目的时候都觉得不太可能,批处理还能做这个事?看完了以后,真觉得可能,只不过是用到了我没有常用到的hh.exe,来看看代码吧

 


  1. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  
  2. :: chm文件反编译器 V1.3  
  3. ::  
  4. :: 功能:  
  5. ::   单个/批量反编译chm文件,并保持资源的原始结构。  
  6. :: 使用方式有两种:  
  7. ::     ① 把单个或多个文件直接拖放到本程序。  
  8. ::     ② 直接双击运行。此时处理的是当前目录下所有以.chm为后缀的文件  
  9. :: 执行过程及处理效果:  
  10. ::   因为 hh -decompile 语句不能使用引号,所以,先把原始资源释放到  
  11. :: 短文件名格式的文件夹中,释放完毕后再改名;  
  12. ::   两种执行方式都有简单的容错处理;反编译后的资源放在单独的文件夹  
  13. :: 中,此文件夹位于当前目录,并以chm文件名命名。  
  14. ::  无法识别不以.chm为后缀名的chm文件,但是可以识别以.chm为后缀名  
  15. ::的其他文件(貌似有点拗口^_^)  
  16. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  
  17. @echo off  
  18. set TT=chm文件反编译器 1.3  
  19. echo.&echo.&echo     正在反编译CHM文件,请稍候...  
  20. cd /d "%~dp0"  
  21. :: 以拖动文件到批处理文件上的方式运行批处理时,%cd% 的值将会强制转换为  
  22. :: %homepath%,因此,上一条语句非常关键!  
  23. set "destination=chm文件反编译结果"  
  24. for /f "delims=" %%i in ("%destination%") do set "destination_short=%%~sfi"  
  25. md "%destination%" 2>nul  
  26. del /a /f "%destination%\伪chm文件列表.txt" 2>nul  
  27. if "%~1"=="" goto All  
  28.  
  29. :Some  
  30. set str=%*  
  31. set "str=%str:"=%"  
  32. set "str= %str%"  
  33. call set "str=%%str: %~d1=" "%~d1%%"  
  34. for %%i in ("%str%") do (  
  35.     if not %%i=="" (  
  36.         title %TT%-正在处理"%%~nxi"  
  37.         if /i not "%%~xi"==".chm" (  
  38.             echo.&echo     "%%~nxi"不是chm文件  
  39.             echo.&echo     请按任意键继续...  
  40.             pause>nul  
  41.             cls  
  42.             echo.&echo.&echo     正在反编译CHM文件,请稍候...  
  43.         ) else (  
  44.             rd /q /s "%%~ni" 2>nul  
  45.             hh -decompile %destination_short%\%%~sni %%~sfi  
  46.             if not exist "%destination%\%%~sni" (  
  47.                 echo "%%~nxi">>"%destination%\伪chm文件列表.txt"  
  48.             ) else (  
  49.                 ren "%destination%\%%~sni" "%%~ni" 2>nul  
  50.             )  
  51.         )  
  52.     )  
  53. )  
  54. exit  
  55.  
  56. :All  
  57. for /f "delims=" %%i in ('dir /a-d /b *.chm 2^>nul') do (  
  58.     title %TT%-正在处理"%%~nxi"  
  59.     rd /q /s "%destination%\%%~ni" 2>nul  
  60.     hh -decompile %destination_short%\%%~sni %%~sfi  
  61.     if not exist "%destination%\%%~sni" (  
  62.         echo "%%~nxi">>"%destination%\伪chm文件列表.txt"  
  63.     ) else (  
  64.         ren "%destination%\%%~sni" "%%~ni" 2>nul  
  65.     )   

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



本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/413438,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10061 0
eclipse中jad反编译工具的安装
我的云盘:工具里面有   Q:为什么有必要在开发环境中配置反编译工具呢? A:  当运行引用了第三方jar包项目时,突然报出了jar包中的某个类的某一行出现异常。我们想看一下这个class文件的代码时,经常出现了如下图所示的场景: god ,我的内心是崩溃的。
1200 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13875 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11888 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7360 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载