Board logo

标题: [其他] 请教批处理call和exit问题 [打印本页]

作者: yunheyuan    时间: 2022-8-26 16:04     标题: 请教批处理call和exit问题

现在遇到一个比较特殊的需求,关于exit的
打个比方:
1.bat开头call 2.bat,然后2.bat开头call 3.bat,在3.bat里面根据条件判断需要跳过不执行上一级2.bat的后续内容,整个程式回到1.bat继续往下执行。
首先不想在2.bat里面增加任何内容判断跳转,想直接在3.bat里面就能结束自己和上一级2.bat,能想到的就是3.bat加exit /b 0,但只能终结自己自己,如果直接exit,会把整个窗口终结也不行,实在想不到什么办法,特此请教各位
作者: fzp070    时间: 2022-8-26 18:37

你这要求,我没有解决方法,等待论坛大佬出手吧!
不过个人感觉这样挺复杂的,如果2.bat和3.bat内容较少,直接放在1.bat内应该也可以吧。
如果一定要执行多重call,你的要求是根据3.bat条件判断是否跳至2.bat或1.bat,那就先call 3.bat
作者: flashercs    时间: 2022-8-26 22:23

用exit /b 1 解决
1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. call 2.bat
  4. echo 1.bat
  5. pause
复制代码
2.bat
  1. @echo off
  2. call 3.bat||exit /b 1
  3. echo 2.bat
复制代码
3.bat
  1. @echo off
  2. echo 3.bat
  3. choice /c YN /m "exit 3.bat and 2.bat ?"
  4. if %errorlevel% equ 1 (
  5. exit /b 1
  6. ) else (
  7. exit /b 0
  8. )
复制代码

作者: yunheyuan    时间: 2022-8-27 09:30

1.bat是主程式,里面会call很多类似2.bat这种,3.bat是一个固定模板,2层的bat前后都会call它,如果都在1.bat调用3.bat,那每调用一个2层bat,前后都要调用一次3.bat,主程式就太乱了,说的也有点乱
楼上的方法可以,2.bat至少不用另起一行加内容,感谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2