Board logo

标题: 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 是这样的吗?楼主? 我也很想知道这怎么实现,还请各位解答一下,如果楼主不是这个意思,那么就当是我提个这样的问题吧,麻烦大家.先谢了.