|
:: chm文件反编译器 V1.2
:: code by namejm 2007.12.27~2008.3.13 bbs.bathome.cn CMD@XP
::
:: 功能:
:: 单个/批量反编译chm文件,并保持资源的原始结构。
:: 使用方式有两种:
:: ① 把单个或指定个数的文件直接拖放到本程序。
:: ② 直接双击运行。此时处理的是当前目录下所有以.chm为后缀的文件
:: 执行过程及处理效果:
:: 因为 hh -decompile 语句不能使用引号,所以,先把原始资源释放到
:: 短文件名格式的文件夹中,释放完毕后再改名;
:: 两种执行方式都有简单的容错处理;反编译后的资源放在单独的文件夹
:: 中,此文件夹位于当前目录,并以chm文件名命名。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
set TT=chm文件反编译器 1.2
echo.&echo.&echo 正在反编译CHM文件,请稍候...
cd /d "%~dp0"
:: 以拖动文件到批处理文件上的方式运行批处理时,%cd% 的值将会强制转换为
:: %homepath%,因此,上一条语句非常关键!
del /a /f 伪chm文件列表.txt 2>nul
if "%~1"=="" goto All
:Some
title %TT%-正在处理"%~nx1"
if /i not "%~x1"==".chm" (
cls
echo.&echo.&echo "%~nx1"不是chm文件
echo.&set /p= 请按任意键继续...
cls
echo.&echo.&echo 正在反编译CHM文件,请稍候...
shift
if "%~2"=="" exit
goto Some
)
if not "%~1"=="" (
title %TT%-正在处理"%~nx1"
rd /q /s "%~n1" 2>nul
hh -decompile %~sn1 %~snx1
if not exist %~sn1 (
echo "%~nx1">>伪chm文件列表.txt
) else (
ren %~sn1 "%~n1" 2>nul
)
shift
if not "%~2"=="" goto Some
)
exit
:All
for /f "delims=" %%i in ('dir /a-d /b *.chm 2^>nul') do (
title %TT%-正在处理"%%~nxi"
rd /q /s "%%~ni" 2>nul
hh -decompile %%~sni %%~snxi
if not exist %%~sni (
echo "%%~nxi">>伪chm文件列表.txt
) else (
ren %%~sni "%%~ni" 2>nul
) |
|