[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【求助】怎么让批处理携带一个exe程序

我写了个批处理需要用到第三方软件。怎么让批处理里携带一那个第三方软件。让批处理自己生成那个第三方工具。

[ 本帖最后由 hackerlong 于 2009-7-3 02:23 编辑 ]

回复 1楼 的帖子

不明白怎么个携带法,你可以考虑将批处理和第三方软件用压缩软件一起压缩。
(*^_^*)

TOP

楼主还真能想啊。你是不是想让批处理自己生成你那个第三方工具?我倒是看过别人用DEBUG临时生成些简单的程序供批处理使用。不过我想应该不是所有的第三方命令行工具都能这样简单的就可以生成的吧。二楼的方法应该是最好的办法,或许可以说是唯一的办法吧(个人看法。或许只是我菜而已)。

[ 本帖最后由 zljzsmzzx 于 2009-7-2 17:42 编辑 ]

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

::把64k内任意文件转换为debug 可以接受输入格式,以便将其嵌入到批处理程序中。
::用法:把要处理的文件拖到本批处理上即可
             或者在cmd命令行运行本批处理时,把要处理的文件作为第一个参数,
             如果本代码存为mfd.bat,则:

           
mfd 要处理的文件名
  1. @echo off
  2. set/a size=%~z1
  3. set/a si=size/512+1
  4. ::取文件大小
  5. pushd %~dp1
  6. echo;&echo;&echo 正在转换请稍候。。。。。。
  7. (echo ;可用于在DEBUG里恢复成二进制程序的16进制数据,n后面的文件名不能以.exe为扩展名。
  8. echo a
  9. call :hex %1
  10. echo n 文件名
  11. echo w
  12. echo q
  13. )>for_debug.txt
  14. start for_debug.txt
  15. del %~n0.fc /q
  16. goto :eof
  17. :hex
  18. setlocal enabledelayedexpansion
  19. for /l %%a in (1,1,128) do (set spac=!spac!    )
  20. (for /l %%k in (1,1,!si!) do set /p=!spac!%~n0.fc
  21. ::准备一个比当前文件大的全空格文件
  22. set n=-1
  23. for /f "skip=1 tokens=1-3 delims=: " %%a in ('fc %~n0.fc %~nx1 /b') do (
  24.         if "%%a"=="FC" goto :fcok
  25.         set/a _a=0x%%a,n+=1
  26.         if !_a! neq !n! (
  27.                 set /a n+=1
  28.                 for /l %%z in (!n!,1,!_a!) do (set "fc=!fc! 20")
  29.                 set /a n=_a
  30.         )
  31.         set "fc=!fc! %%c"
  32.         if "!fc:~60!" neq "" (echo;db!fc:~,60!&set fc=!fc:~60!)
  33. )
  34. ::利用fc 的二进制对比,取十六进制编码,并生成debug 可以接受的输入串
  35. :fcok
  36. echo;db!fc!
  37. call :o-h 调用子过程,把文件大小转为16进制。
  38. echo r cx
  39. echo !hh:~-4!
  40. if "!hh:~4!" neq "" (echo r bx&echo !hh:~,-4!)
  41. ::转为debug可以接受的格式,低位在cx寄存器,高位在bx寄存器。
  42. endlocal
  43. goto :eof
  44. :o-h
  45. set n=0
  46. for %%a in (0 1 2 3 4 5 6 7 8 9 a b c d e f) do (set h!n!=%%a&set/a n+=1)
  47. :ohlp
  48. set/a one=size%%16,size=size/16
  49. set hh=!h%one%!!hh!
  50. if !size! equ 0 goto :eof
  51. goto :ohlp
复制代码
下面是一个处理得到的例子:

;可用于在DEBUG里恢复成二进制程序的16进制数据,n后面的文件名不能以.exe为扩展名。
a
db B8 00 00 CD 16 88 E0 B4 4C CD 21
r cx
b
n 文件名
w
q

把上面的数据通过管道输入给debug 处理,即可还原为原二进制数据。

[ 本帖最后由 netbenton 于 2009-7-3 12:58 编辑 ]
1

评分人数

TOP

五楼的怎么使用代码那能写清楚吗?我用了下还没试出来。

TOP

回复 4楼 的帖子

batcher能教我怎么把第三方软件编程debug啊!

TOP

五楼已更新,加入具体使用方法。
该工具仅仅是帮你把文件处理成为debug可以接受的数据,如何还原楼主还要另外了解debug,及如何进行管道操作。
常用方法:
(1)

(echo a
echo db cd 21
echo;
echo r cx
echo 02
echo n abc.com
echo w
echo q) |debug >nul


(2) 把数据存为临时文件:abc.txt
debug <abc.txt>nul


(3) 直接把批处理本身作为管道输入文本
@echo off
goto :begin
;可用于在DEBUG里恢复成二进制程序的16进制数据,n后面的文件名不能以.exe为扩展名。
a
db B8 00 00 CD 16 88 E0 B4 4C CD 21
r cx
b
n abc.com
w
q
:begin
debug < %0 >nul
dir abc.com
pause


另外还有more用法,请看4楼给出的链接。

其实可以处理64k以上的文件,只是64k已经是debug的一个段的上限,处理起来较麻烦。

[ 本帖最后由 netbenton 于 2009-7-3 12:59 编辑 ]

TOP

回复 7楼 的帖子

any2bat之批处理版和VBS版
http://bbs.bathome.net/thread-4435-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原来已经有那么多的经典贴子了,
回贴学习来了,呵呵。。

TOP

哈!我收回3楼的话。以后真要谦虚一点了。收藏,闪人,慢慢研究。楼下的继续。

TOP

我笨啊!还是没试出来。各位大虾们能给个例子吗?

TOP

返回列表