标题: call语句的问题???
[打印本页]
作者: sunyao
时间: 2006-12-1 03:02
标题: call语句的问题???
有两个bat文件:a.bat和b.bat
在b.bat中call a.bat
现在想在call a.bat时如果a.bat发生异常就不再返回b.bat了
不知道怎么实现
作者: pkone
时间: 2006-12-1 03:33
根据a.bat里的异常返回值判断
if level XXX=xxx exit
作者: sunyao
时间: 2006-12-1 04:00
判断可以做到
exit只能终止a.bat
可还是要返回到b.bat中继续执行b.bat
我的意思是如果a.bat异常就不再返回b.bat
整个程序终止也就是一旦a.bat异常就什么都不执行了
别忘了整个程序是执行b.bat 在b.bat中call a.bat
作者: KIKOOOO
时间: 2006-12-1 04:34
根据返回值来终止a.bat
goto :eof
作者: sunyao
时间: 2006-12-1 05:28
还是没看懂我的问题
我在a.bat异常时不仅要结束a.bat还要结束b.bat
b.bat也不执行了
goto:eof
只会结束a.bat 但还要返回b.bat继续执行剩下的程序
作者: zh159
时间: 2006-12-1 06:23
LZ没明白 2 楼 pkone 的意思:
a.bat里发生异常,一般会有一个异常返回值,b.bat里用if level XXX=xxx exit判断该异常返回值结束运行
作者: sunyao
时间: 2006-12-1 06:33
其实严格讲并不是一个异常
是程序的一个分支
如果执行分支就结束所有程序
作者: lxmxn
时间: 2006-12-1 07:17
b.bat中加入下面的一个语句试试:
call a.bat || goto :eof
作者: sunyao
时间: 2006-12-1 07:20
这样好像不行吧
call a.bat || goto :eof
这句好像是call a.bat 失败才执行goto :eof
但事实上并不是call a.bat 失败
作者: lxmxn
时间: 2006-12-1 07:27
你试过了没有?
事实胜于雄辩!
作者: sunyao
时间: 2006-12-1 07:36
真不行
不好意思
作者: lxmxn
时间: 2006-12-1 07:40
怎么不行?把你要实现的目的和运行结果说一下。
作者: sunyao
时间: 2006-12-1 07:47
b.bat中call a.bat
我在a.bat脚本中做一个判断
如果状态为fail,就向log中输出“异常”
同时结束a.bat和b.bat
现在是a.bat结束但b.bat还要执行到程序结束
作者: lxmxn
时间: 2006-12-1 08:00
实在听不懂你说的什么意思,两个bat能完成的,一个bat就可以完成,可以合并起来。p.s.:log 是指的什么东西啊?
作者: redtek
时间: 2006-12-1 12:34
我也看得不太明白,这是一个 1.bat Call 2.bat 的是否正常运行了 2.bat 的测试代码:)
你可以将 2.bat 改名试试(故意制造一个错误),这个时候,1.bat就会知道2.bat运行的时候出错了,并输出相关信息……
sunyao兄可以参考原理……
运行环境: Windows CMD Shell
1.bat
@echo off
Call 2.Bat 02
:: 判断所 Call 之 2.Bat 是否运行成功,只要有预设errorlevel返回值,就是运行成功!
if %errorlevel%==1000 ( echo 2.Bat 成功执行! ) else ( echo 2.Bat 运行失败! )
2.bat
@echo off
if [%1]==[] exit /b
goto :%1
:01
echo 01 标签段
goto :end
:02
echo 02 标签段
goto :end
:end
exit /b 1000
作者: NaturalJ0
时间: 2006-12-1 21:07
把错误传递给 b.bat ,b.bat 收到后由其自身判断是继续运行还是结束。
作者: sunyao
时间: 2006-12-1 22:45
都不太好使
我试试把量个bat合成一个试试吧
作者: 26933062
时间: 2006-12-24 06:29
我想大家可能都没看懂楼主的意思,注意一下7楼说的,其实是一个分支,也就是说,a.bat并没有异常,只是跳转到某个标签的时候,要求要结束b.bat也就是说非要用子程序a.bat来结束父程序b.txt 是这样的吗?楼主? 我也很想知道这怎么实现,还请各位解答一下,如果楼主不是这个意思,那么就当是我提个这样的问题吧,麻烦大家.先谢了.