如何从’call’ed例程中终止Windows批处理文件?
我有一个
Windows批处理文件,里面有几个子程序,如下所示:
call :a goto :eof :a call :b goto :eof :b :: How do I directly exit here from here? goto :eof 我在Vista的cmd窗口中运行它. >我试过’退出’,关闭整个cmd窗口.那不是我想要的. 这篇文章很有意思,但没有其他选择的行为符合我的要求. http://www.computerhope.com/exithlp.htm 还有另一种方式吗? 谢谢.
您可以像这样调用子例程:
call :b||exit /b 1 这相当于 call :b if errorlevel 1 exit /b 1 它略短,为您节省一条线,但它仍然不理想,我同意. 除此之外,我没有看到任何方式. 编辑:好的,我有办法,但它是Pure Evil?. 错误使用最大堆栈大小,因此错误递归限制,我们创建了另一个子程序,通过递归调用自身来简化堆栈: @echo off echo Calling a call :a echo Called a goto :eof :a echo Calling b call :b echo Called b goto :eof :b echo Trying to exit call :exit goto :eof :exit call :exit 但是,这会导致令人讨厌的错误消息 ****** B A T C H R E C U R S I O N exceeds STACK limits ****** Recursion Count=704,Stack Usage=90 percent ****** B A T C H PROCESSING IS A B O R T E D ****** 此外,我的机器需要大约2秒钟. 您可以通过更改call语句来抑制错误消息,如下所示: call :exit >nul 2>&1 它会将想要输出的所有内容重定向到一个很大的空白. 但考虑到填充堆栈所需的时间,我认为第一个变体会更容易. 我还在考虑使用第二个批处理文件,在没有调用的情况下运行时基本上会停止第一个批处理文件.但不知何故,这对子程序不起作用.展开调用堆栈似乎仍然存在. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在安装了libv8的windows上安装therubyracer –with-system-
- windows-server-2008 – Windows Server 2008:当NIC有多个
- 如何以编程方式在Windows 7中的StartMenu上固定应用程序
- wpf – 如何停止每次打开一个新窗口?
- Windows Phone应用程序仅在从商店下载时崩溃
- windows – 检索当前域用户的全名
- 如何在Windows中的Python中抛出错误窗口
- 在Windows Vista / 7的C#中显示验证对话框
- Monogame Windows 8错误 – 部署失败,因为无法将具有目标平
- win-universal-app – 在电话上的Windows 10 Universal App