⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 any2bat.txt

📁 s11ss写的批处理。他把很多C语言中经典的例子都用批处理实现了
💻 TXT
字号:
@echo off

::::::::Any2Bat {s11ss 2007-12-2}::::::::

::思路:利用debug获得原文件16进制代码,然后再次利用debug构造生成原文件的bat代码。

setlocal

set f="%~f1"
if not exist %f% (echo File doesn't exist!&&goto :eof)

::写临时文件
set len=%~z1
set/a end=0x100+%len%-1
call :10to16 %end%
pushd %tmp%
>t1 call echo d100 %%r%end%%%
>>t1 echo q
>nul copy %f% t2 
type t1|debug t2|more|find ":">t3

::读取临时文件t3,获得16进制代码
set "i= %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q"
for /f "delims=" %%a in (t3) do set/a lines+=1
set/a m=1
setlocal enabledelayedexpansion
for /f "tokens=1-17 delims=- " %%a in (t3) do (
        if !m! equ %lines% goto :lastline
        set "hex!m!=%i%"
        set/a m+=1
)
:lastline
set/a m-=1
set/a remain=(%len%-16*%m%+1)*3
call set remain=%%i:~0,%remain%%%
for /f "tokens=1-17 delims=- " %%a in ('^<t3 more +%m%') do set "hex%lines%=%remain%"

::写bat
call :10to16 %len%
set t=^>^>%f%.bat echo
%t% @echo off
%t% ^<^"%%^~f0^" more +4 ^|debug ^>nul
%t% move t "%~nx1"
%t% goto :eof
for /l %%a in (1,1,%lines%) do (
        call set hex%%a=%%hex%%a:*:=e%%
        %t% !hex%%a!
)
%t% rcx
%t% !r%len%!
%t% n t
%t% w
%t% q

for /l %%a in (1,1,3) do (del t%%a)

goto :eof










:10to16
set "h=0123456789ABCDEF"
set/a q=%1
        :1c
        set/a r=%q%%%16
        set/a q=%q%/16
        call set r=%%h:~%r%,1%%
        call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -