找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30465|回复: 5

[系统相关] 批处理如何做到像dll一样的调用

[复制链接]
发表于 2012-7-7 07:14:46 | 显示全部楼层 |阅读模式
本帖最后由 canyuexiaolang 于 2012-7-7 07:32 编辑

悲催!
昨天已经弄完了 但是......
忘了放哪里了。

希望大家帮我想一想 是否能做出来像dll那样效果的批处理呢?

方法都准备好了 call toolkit.cmd function
发表于 2012-7-7 07:46:04 | 显示全部楼层
很简单的。%1 ~ %~9 接受“参数”,话说不够了可以用shift偏移
batdll.bat
  1. @echo off
  2. echo "%~1" "%~2"
  3. pause
复制代码
然后直接 batdll 123 456
 楼主| 发表于 2012-7-7 07:49:15 | 显示全部楼层
回复 2# canyuexiaolang


    我知道这种方法 问题是dll不是要好几个工具都集合到一个dll里面吗?
call效率低 goto不能支持%2以后的参数(用goto %1%2总不能把每种情况都弄到标签里吧?)
谢谢关注
发表于 2012-7-7 08:35:51 | 显示全部楼层
if 判断%1然后goto到%1代表的什么地方在执行代码。简单给你举例把
  1. @echo off
  2. if not "%~2"=="" (
  3.     if "%~1"=="delfile" goto delfile
  4.     if "%~1"=="addfile" goto addfile
  5. )
  6. echo 举例:take del 1.txt
  7. echo 举例:take add 1.txt
  8. goto :eof  //goto :eof和exit差不多

  9. :delfile
  10. del "%~2" && echo successfull || echo fail
  11. goto :eof


  12. :addfile
  13. echo.>"%~2" && echo successfull || echo fail
  14. goto :eof
复制代码
保存为take.bat
发表于 2012-7-7 09:18:37 | 显示全部楼层
批处理本来就没有函数的概念,强行模拟函数导致效率低都是人为造成的, 谁让你不去用高级语言编程?
call和goto效率应该是差不多的,如果你不是频繁调用call,效率因素其实可以忽略。
比如处理一个文本,用纯批要10分钟,用findstr.exe只要10秒钟,这时你还会在乎启动一个进程所需的额外开销吗(可能也就是几十毫秒到几百毫秒的启动时间)?

lib.cmd 示例
  1. @echo off
  2. call :%*
  3. goto :eof

  4. :func1
  5. ...
  6. goto :eof

  7. :func2
  8. ...
  9. goto :eof
复制代码
 楼主| 发表于 2012-7-7 10:54:16 | 显示全部楼层
回复 4# canyuexiaolang


    强悍!!!我没想到......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:13 , Processed in 0.019332 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表