标题: [文本处理] 批处理调用另一个批处理后如何返回执行下面的代码 [打印本页]
作者: aishangwangluo 时间: 2011-1-17 09:22 标题: 批处理调用另一个批处理后如何返回执行下面的代码
先执行一个批处理,在执行中需要用到另一个批处理,希望调用的批处理返回一个值,或者直接回到当前的批处理中,继续执行下面的代码!
有哪位高手,能举例说明吗?
作者: hanyeguxing 时间: 2011-1-17 10:21
1,在当前直接call 另一个批处理,该批处理中的变量都可以在当前使用
2,如果另一个批处理中使用了 setlocal ,则在其结束前 Endlocal&set W=%W% ,以使得变量 W 在当前可用
作者: wc726842270 时间: 2011-1-17 10:39
用一个简单的CHOICE吧,我想处理这类问题会比较好用
作者: hanyeguxing 时间: 2011-1-17 10:56
示例1:
当前批处理:- @echo off
- call "另一个批处理.bat"
- echo 今天为本年第%D%天
- pause
复制代码
另一个批处理:- @echo off
- set/a D=1%date:~8,2%%%100,M=1%date:~5,2%%%100-1
- for /l %%a in (1,1,%M%) do set/a "K=!(%%a-4)|!(%%a-6)|!(%%a-9)|!(%%a-11)","D+=!(%%a-2)*(28+!(%date:~0,4%%%4))+K*30+(!!(%%a-2)&!K)*31"
复制代码
示例2:
当前批处理:- @echo off&setlocal enableDelayedExpansion
- call "另一个批处理.bat"
- echo 今天为本年第%D%天
- pause
复制代码
另一个批处理:- @echo off&setlocal disabledelayedexpansion
- set/a D=1%date:~8,2%%%100,M=1%date:~5,2%%%100-1
- for /l %%a in (1,1,%M%) do set/a "K=!(%%a-4)|!(%%a-6)|!(%%a-9)|!(%%a-11)","D+=!(%%a-2)*(28+!(%date:~0,4%%%4))+K*30+(!!(%%a-2)&!K)*31"
- Endlocal&set D=%D%
复制代码
[ 本帖最后由 hanyeguxing 于 2011-1-17 13:49 编辑 ]
作者: Hello123World 时间: 2011-1-17 12:42 标题: 回复 4楼 的帖子
call 是调用完其它批处理之后执行后面的代码,但是如果是需要调用其它批处理后不执行后面的代码,只能在call后 加exit来实现吗,有没有更直接的方法(命令)。- @echo off
- call "另一个批处理.bat"
- exit
- echo 今天为本年第%D%天
- pause
复制代码
作者: hanyeguxing 时间: 2011-1-17 13:26 标题: 回复 5楼 的帖子
不执行哪个“后面的代码”?- @echo off
- call "另一个批处理.bat"
复制代码
作者: yhcbird 时间: 2011-1-17 14:33
楼主估计是要选择判断。可能是要加入if的意思
作者: aishangwangluo 时间: 2011-1-17 17:04 标题: 回复 4楼 的帖子
刚刚接触批处理,很多东西还不明白,感谢版主的大力支持,经过您的指点,我明白了call 才能达到这种效果!
再次感谢!
5楼的意思,应该是执行call "另一个批处理.bat"后,停止执行call后面的代码,以"另一个批处理.bat"来关闭cmd窗口,停止批处理吧!
不知道我这样理解对不对?
作者: wc726842270 时间: 2011-1-17 18:30 标题: 回复 8楼 的帖子
CALL语句调用结束后会返回它的下一句,继续执行下面的命令,
如果调用外部的P难以理解,帮你合一下(是5L的 第一个)- @echo off
- call :2
- echo 今天为本年第%D%天
- pause
- :2
- @echo off
- set/a D=1%date:~8,2%%%100,M=1%date:~5,2%%%100-1
- for /l %%a in (1,1,%M%) do set/a "K=!(%%a-4)|!(%%a-6)|!(%%a-9)|!(%%a-11)","D+=!(%%a-2)*(28+!(%date:~0,4%%%4))+K*30+(!!(%%a-2)&!K)*31"
复制代码
有兴趣就改变下顺序,或在最后加个PAUSE,看看运行结果,能帮助你理解
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |