从嵌套批处理文件退出

use*_*646 5 windows cmd batch-file call exit

我有4个批处理文件,假设a.bat,b.bat,c.bat和d.bat.现在调用这些批处理文件的方式是a.bat调用b.bat,b.bat调用c.call等等.

如果我在任何批处理文件中出现任何错误,我想通过说出错误退出整个程序,并提出哪个批处理文件有问题.我的问题是,我该怎么做?

我在这里使用exit /b但它只从当前的批处理文件中退出并从那里调用后移回批处理文件:

一只蝙蝠

@echo. off
echo. this is batch 'a'
call b.bat
Run Code Online (Sandbox Code Playgroud)

b.bat

@echo. off
echo. this is batch 'b'
call c.bat
Run Code Online (Sandbox Code Playgroud)

C.BAT

@echo. off
echo. this is batch 'c'
Run Code Online (Sandbox Code Playgroud)

我在批处理'C'中出错 - 它应该报告错误并退出,但它会以某种方式回到批处理'B'.有关如何退出嵌套批处理文件的任何想法?

jeb*_*jeb 5

您可以使用语法错误,这会立即停止批处理而不关闭命令窗口.

:HALT函数调用的:__halt函数只剿错误消息.

C.BAT

@echo off
echo this is batch 'c'
echo An error occurs
call :HALT
exit /b

:HALT
call :__halt 2> nul
exit /b

:__halt
()
Run Code Online (Sandbox Code Playgroud)


End*_*oro 2

你可以试试这个(c.bat):

@echo. this is batch 'c'
@pause
exit
Run Code Online (Sandbox Code Playgroud)