找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17893|回复: 3

[其他] 请教批处理call和exit问题

[复制链接]
发表于 2022-8-26 16:04:24 | 显示全部楼层 |阅读模式
现在遇到一个比较特殊的需求,关于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,会把整个窗口终结也不行,实在想不到什么办法,特此请教各位
发表于 2022-8-26 18:37:17 | 显示全部楼层
你这要求,我没有解决方法,等待论坛大佬出手吧!
不过个人感觉这样挺复杂的,如果2.bat和3.bat内容较少,直接放在1.bat内应该也可以吧。
如果一定要执行多重call,你的要求是根据3.bat条件判断是否跳至2.bat或1.bat,那就先call 3.bat
发表于 2022-8-26 22:23:54 | 显示全部楼层
用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. )
复制代码
 楼主| 发表于 2022-8-27 09:30:19 | 显示全部楼层
1.bat是主程式,里面会call很多类似2.bat这种,3.bat是一个固定模板,2层的bat前后都会call它,如果都在1.bat调用3.bat,那每调用一个2层bat,前后都要调用一次3.bat,主程式就太乱了,说的也有点乱
楼上的方法可以,2.bat至少不用另起一行加内容,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 17:00 , Processed in 0.017876 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表