批处理的Call abel,也就是用call来调用某个标签,我们可以把它理解成函数的方式
其实说是函数,也是不太标准的罢了,类似的。
不过有了这个所谓的“函数”,就可以减缩代码的体积。也算是很有用处的了。
call :label
相信这个大家都很熟悉吧?调用某个标签,这个就是我们的“函数”的调用方法了。
多说无益,还是举个例子吧
获取字符串的 “函数”- :StrLen
- Setlocal EnableDelayedExpansion
- Set "Str=%1"&Set "StrLen=0"
- If "%Str%"=="" Echo 字符串长度为0&Goto :eof
- :Next
- Set /a StrLen+=1
- For %%i in ("%StrLen%") do if not "!Str:~%%i,1!"=="" goto Next
- Echo 字符串长度为%StrLen%
- Goto :eof
复制代码 把这段代码放到文件最后,再加点代码,组成一个调用“函数”的批处理程序。- @echo off
- Set /p Input=请输入字符串:
- Call :StrLen %Input%
- Pause
- Exit
- ::---------------------StrLen“函数”-----------------------------
- :StrLen
- Setlocal EnableDelayedExpansion
- Set "Str=%1"&Set "StrLen=0"
- If "%Str%"=="" Echo 字符串长度为0&Goto :eof
- :Next
- Set /a StrLen+=1
- For %%i in ("%StrLen%") do if not "!Str:~%%i,1!"=="" goto Next
- Echo 字符串长度为%StrLen%
- Goto :eof
复制代码 当然,纠错功能,还有特殊字符暂不讨论
上边只是Strlen函数的关键代码罢了,
完整的“函数”当然是要有纠错功能的嘛...
其实,把Call :Label Date 当作函数来看,不仅仅会便于理解,
多次调用还可以在代码上减小体积。
----------------------------------------------------------------------------------------------
以上仅仅代表个人观点。如有错误或者误人子弟之类的,就赶紧提醒哈。
反正我是这么理解的,觉得这样容易理解,就说给大家。
如果有什么错误还请大家谅解了...
[ 本帖最后由 yslyxqysl 于 2010-8-26 13:53 编辑 ] |