我的foo.bat文件:
exit /b 1
我在命令提示符中执行的操作:
foo.bat && echo "OK"
结果:
exit /b 1
"OK"
然而,当我使用双竖线时,echo不会发生:
foo.bat || echo "OK"
结果:
exit /b 1
这正好与我预期的 && 和 || 的行为相反。请参见https://ss64.com/nt/call.html,其中说:
commandA && commandB 如果运行 commandA 成功,则运行 commandB
和
commandA || commandB 如果运行 commandA 失败,则运行 commandB
我是不是疯了?我错过了什么?
call foo.bat && echo ok || echo fail
可以正常工作(我知道,这并不能解释所描述的行为,因为 - 嗯,我没有解释。我和你一样感到惊讶) - Stephanfoo.bat
并获取它的退出代码,必须使用call
命令,并且可以通过&&
和/或||
来获取退出代码;否则,执行控制不会(真正地)返回到调用脚本。但由于已经读取和解析了完整的命令行(带有&&
或||
),因此似乎已经完全执行,但仅仅是从启动foo.bat
而非从其返回的退出代码中成功执行... - aschipfl&&
和||
响应脚本中执行的最后一个命令的返回代码。请参阅我的答案。 - dbenham