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

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

本帖最后由 canyuexiaolang 于 2012-7-7 07:32 编辑

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

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

方法都准备好了 call toolkit.cmd function
Windows收藏者

很简单的。%1 ~ %~9 接受“参数”,话说不够了可以用shift偏移
batdll.bat
  1. @echo off
  2. echo "%~1" "%~2"
  3. pause
复制代码
然后直接 batdll 123 456

TOP

回复 2# canyuexiaolang


    我知道这种方法 问题是dll不是要好几个工具都集合到一个dll里面吗?
call效率低 goto不能支持%2以后的参数(用goto %1%2总不能把每种情况都弄到标签里吧?)
谢谢关注
Windows收藏者

TOP

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

TOP

批处理本来就没有函数的概念,强行模拟函数导致效率低都是人为造成的, 谁让你不去用高级语言编程?
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
复制代码

TOP

回复 4# canyuexiaolang


    强悍!!!我没想到......
Windows收藏者

TOP

返回列表